Все кроме первого css: Все div кроме первого? — Хабр Q&A
CSS-выберите всех детей, кроме первого
У меня есть следующее:
<div>
<p>chapter 1, paragraph 1</p>
<p>chapter 1, paragraph 2</p>
<div>
<p>chapter 1, section 1, paragraph 1</p>
<p>chapter 1, section 1, paragraph 2</p>
</div>
</div>
<div>
<p>chapter 2, paragraph 1</p>
<div>
<p>chapter 2, section 1, paragraph 1</p>
<p>chapter 2, section 1, paragraph 2</p>
</div>
<div>
<p>chapter 2, section 2, paragraph 1</p>
<p>chapter 2, section 2, paragraph 2</p>
</div>
</div>
Используя CSS, можно ли выбрать все элементы <p>
, кроме первого, для каждого элемента .chapter
и .section
? Например, я хотел бы выбрать <p>chapter 1, paragraph 2</p>
<p>chapter 1, section 1, paragraph 2</p>
, <p>chapter 2, section 1, paragraph 2</p>
, <p>chapter 2, section 2, paragraph 2</p>
и так далее.Спасибо.
cssПоделиться Источник Rui Afonso Pereira 22 ноября 2014 в 22:48
5 ответов
- Как выбрать всех детей, кроме первого и последнего, с помощью селекторов CSS
Как бы я выбрал всех детей в таблице, кроме первого и последнего? Я пробовал это сделать, но в конечном итоге выбираю всех детей, которые не являются первыми, и всех детей, которые не являются последними, которые в конечном итоге являются всеми детьми: table.programs tr td:not(:first-child),…
- CSS селектор, выберите класс, кроме первого вхождения этого класса
попытка выбрать класс, кроме первого вхождения этого класса. почему это не работает .myClass:not(.myClass:first) ps только css нет jquery, это с jquery Как выбрать все, кроме первого появления класса
2
Вы должны использовать :first-of-type
в сочетании с :not
.chapter > p:not(:first-of-type), .section > p:not(:first-of-type){ color:#ccc }
<div> <p>chapter 1, paragraph 1</p> <p>chapter 1, paragraph 2</p> <div> <p>chapter 1, section 1, paragraph 1</p> <p>chapter 1, section 1, paragraph 2</p> </div> </div> <div> <p>chapter 2, paragraph 1</p> <div> <p>chapter 2, section 1, paragraph 1</p> <p>chapter 2, section 1, paragraph 2</p> <p>chapter 2, section 1, paragraph 3</p> <p>chapter 2, section 1, paragraph 4</p> </div> <div> <p>chapter 2, section 2, paragraph 1</p> <p>chapter 2, section 2, paragraph 2</p> </div> </div>
Поделиться Gabriele Petrioli 22 ноября 2014 в 22:57
1
Использовать :not(:first-child)
.chapter p:not(:first-child) {
color: red;
}
<div> <p>chapter 1, paragraph 1</p> <p>chapter 1, paragraph 2</p> <div> <p>chapter 1, section 1, paragraph 1</p> <p>chapter 1, section 1, paragraph 2</p> </div> </div> <div> <p>chapter 2, paragraph 1</p> <div> <p>chapter 2, section 1, paragraph 1</p> <p>chapter 2, section 1, paragraph 2</p> </div> <div> <p>chapter 2, section 2, paragraph 1</p> <p>chapter 2, section 2, paragraph 2</p> </div> </div>
Поделиться
1
Еще один подход, как часть стремления к завершенности, perpaps:
.chapter p:first-child ~ p {
color: red;
}
.chapter {
border: 1px solid #000;
}
.section {
border-top: 1px solid #999;
margin-left: 2em;
}
<div> <p>chapter 1, paragraph 1</p> <p>chapter 1, paragraph 2</p> <div> <p>chapter 1, section 1, paragraph 1</p> <p>chapter 1, section 1, paragraph 2</p> </div> </div> <div> <p>chapter 2, paragraph 1</p> <div> <p>chapter 2, section 1, paragraph 1</p> <p>chapter 2, section 1, paragraph 2</p> </div> <div> <p>chapter 2, section 2, paragraph 1</p> <p>chapter 2, section 2, paragraph 2</p> </div> </div>
Рекомендации:
Поделиться David says reinstate Monica 22 ноября 2014 в 23:23
- liferay скорость получения первых детей или первого брата
- Выберите детей верхнего уровня, используя CSS
Можно ли выбрать всех детей верхнего уровня независимо от их типа с помощью CSS. <div class=parent> <div class=top-level-1> <!— CONTENT —> </div> <div class=top-level-2> <!— CONTENT —> </div> <a class=top-level-3> <!— CONTENT —>…
0
Вы можете использовать nth-child
<style>
.chapter p:nth-child(2) {
color: red;
}
.section p:nth-child(2) {
color: blue
}
</style>
<div> <p>chapter 1, paragraph 1</p> <p>chapter 1, paragraph 2</p> <div> <p>chapter 1, section 1, paragraph 1</p> <p>chapter 1, section 1, paragraph 2</p> </div> </div> <div> <p>chapter 2, paragraph 1</p> <div> <p>chapter 2, section 1, paragraph 1</p> <p>chapter 2, section 1, paragraph 2</p> </div> <div> <p>chapter 2, section 2, paragraph 1</p> <p>chapter 2, section 2, paragraph 2</p> </div> </div>
Поделиться Reza Aria 22 ноября 2014 в 22:55
0
Вы можете использовать элемент+селектор элементов для своей задачи, и вот пример.
.chapter p + p,
.section p + p { };
Он выберет все следующие элементы после первого тега p.
Поделиться alphawow 22 ноября 2014 в 23:01
Похожие вопросы:
jQuery селектор для всех коллов, кроме первого колла на столе
Я хочу применить выравнивание по правому краю для всех столбцов, кроме первого столбца. Я написал следующее, Но это работает нормально. Но как я могу объединить эти утверждения в одну строку?…
Как скрыть всех детей, кроме первого ребенка в Javascript/JQuery и CSS?
HTML: <table id=collapse> <tbody> <tr> <th>Heading</th> </tr> <tr> <td>Text</td> </tr> <tr> <td>Text</td> </tr>…
Выберите все ‘tr’, кроме первого
Как я могу выбрать все элементы tr , кроме первого tr в таблице с CSS? Я попробовал использовать этот метод, но обнаружил, что он не работает.
Как выбрать всех детей, кроме первого и последнего, с помощью селекторов CSS
Как бы я выбрал всех детей в таблице, кроме первого и последнего? Я пробовал это сделать, но в конечном итоге выбираю всех детей, которые не являются первыми, и всех детей, которые не являются…
CSS селектор, выберите класс, кроме первого вхождения этого класса
попытка выбрать класс, кроме первого вхождения этого класса. почему это не работает .myClass:not(.myClass:first) ps только css нет jquery, это с jquery Как выбрать все, кроме первого появления…
liferay скорость получения первых детей или первого брата
Есть ли способ вместо того, чтобы получить всех детей или всех братьев и сестер с $var.getChildren() и $var.getSiblings(), получить только первого ребенка или первого брата ? Я не мог найти ничего…
Выберите детей верхнего уровня, используя CSS
Можно ли выбрать всех детей верхнего уровня независимо от их типа с помощью CSS. <div class=parent> <div class=top-level-1> <!— CONTENT —> </div> <div…
Как ориентироваться на всех детей, а не только на первый уровень?
Это будет нацелено на всех детей первого уровня: $(this).children() Как я могу ориентироваться на всех детей не только первого уровня, но и на детей детей и так далее?
css выберите последние четыре, если последний элемент кратен четырем, если кратен 3, то последние 3
У меня есть следующие css, чтобы получить последние четыре :nth-last-child(-n+4){border-bottom: none;} и он возвращает мне этот результат : В этом случае у всех последних четырех детей нет дна…
Как проверить всех детей из селектора кроме первого ребенка в шутку
Я хочу проверить всех детей селектора, кроме первого ребенка, если кто-то может помочь, я был бы признателен и заранее благодарю вас. Я пробовал это сделать но ни одна из этих линий не сработала:…
Псевдокласс :nth-child | CSS | WebReference
Псевдокласс :nth-child используется для добавления стиля к элементам на основе нумерации в дереве элементов.
Синтаксис
Селектор:nth-child(odd | even | <число> | <выражение>) {...}
Обозначения
Описание | Пример | |
---|---|---|
<тип> | Указывает тип значения. | <размер> |
A && B | Значения должны выводиться в указанном порядке. | <размер> && <цвет> |
A | B | Указывает, что надо выбрать только одно значение из предложенных (A или B). | normal | small-caps |
A || B | Каждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке. | width || count |
[ ] | Группирует значения. | [ crop || cross ] |
* | Повторять ноль или больше раз. | [,<время>]* |
+ | Повторять один или больше раз. | <число>+ |
? | Указанный тип, слово или группа не является обязательным. | inset? |
{A, B} | Повторять не менее A, но не более B раз. | <радиус>{1,4} |
# | Повторять один или больше раз через запятую. | <время># |
Значения
- odd
- Все нечётные номера элементов.
- even
- Все чётные номера элементов.
- <число>
- Порядковый номер дочернего элемента относительно своего родителя. Нумерация начинается с 1, это будет первый элемент в списке.
- <выражение>
- Задаётся в виде an±b, где a и b — целые числа, а n — счётчик, который автоматически принимает значение 0, 1, 2…
Если a равно нулю, то оно не пишется и запись сокращается до b. Если b равно нулю, то оно также не указывается и выражение записывается в форме an. a и b могут быть отрицательными числами, в этом случае знак плюс меняется на минус, например: 5n-1.
За счёт использования отрицательных значений a и b некоторые результаты могут также получиться отрицательными или равными нулю. Однако на элементы оказывают влияние только положительные значения из-за того, что нумерация элементов начинается с 1.
В табл. 1 приведены некоторые возможные выражения и ключевые слова, а также указано, какие номера элементов будут задействованы.
Значение | Номера элементов | Описание |
---|---|---|
1 | 1 | Первый элемент, является синонимом псевдокласса :first-child. |
5 | 5 | Пятый элемент. |
2n | 2, 4, 6, 8, 10,… | Все чётные элементы, аналог значения even. |
2n+1 | 1, 3, 5, 7, 9,… | Все нечётные элементы, аналог значения odd. |
3n | 3, 6, 9, 12, 15,… | Каждый третий элемент. |
3n+2 | 2, 5, 8, 11, 14,… | Каждый третий элемент, начиная со второго. |
n+4 | 4, 5, 6, 7, 8,… | Все элементы, кроме первых трёх. |
-n+3 | 3, 2, 1 | Первые три элемента. |
5n-2 | 3, 8, 13, 18, 23,… | — |
even | 2, 4, 6, 8, 10,… | Все чётные элементы. |
odd | 1, 3, 5, 7, 9,… | Все нечётные элементы. |
Допустимо комбинировать два псевдокласса :nth-child для выбора диапазона элементов. Здесь будут выбраны все элементы со второго по пятый.
:nth-child(n+2):nth-child(-n+5) { … }
Пример
<!DOCTYPE html> <html> <head> <meta charset=»utf-8″> <title>nth-child</title> <style> table { width: 100%; /* Ширина таблицы */ border-spacing: 0; /* Расстояние между ячейками */ } tr:nth-child(2n) { background: #f0f0f0; /* Цвет фона */ } tr:nth-child(1) { background: #666; /* Цвет фона */ color: #fff; /* Цвет текста */ } </style> </head> <body> <table border=»1″> <tr> <td> </td><td>2134</td><td>2135</td> <td>2136</td><td>2137</td><td>2138</td> </tr> <tr> <td>Нефть</td><td>16</td><td>34</td> <td>62</td><td>74</td><td>57</td> </tr> <tr> <td>Золото</td><td>4</td><td>69</td> <td>72</td><td>56</td><td>47</td> </tr> <tr> <td>Дерево</td><td>7</td><td>73</td> <td>79</td><td>34</td><td>86</td> </tr> <tr> <td>Камни</td><td>23</td><td>34</td> <td>88</td><td>53</td><td>103</td> </tr> </table> </body> </html>В данном примере псевдокласс :nth-child используется для изменения стиля первой строки таблицы, а также для выделения цветом всех чётных строк (рис. 1).
Рис. 1. Применение псевдокласса :nth-child к строкам таблицы
Спецификация
Каждая спецификация проходит несколько стадий одобрения.
- Recommendation (Рекомендация) — спецификация одобрена W3C и рекомендована как стандарт.
- Candidate Recommendation (Возможная рекомендация) — группа, отвечающая за стандарт, удовлетворена, как он соответствует своим целям, но требуется помощь сообщества разработчиков по реализации стандарта.
- Proposed Recommendation (Предлагаемая рекомендация) — на этом этапе документ представлен на рассмотрение Консультативного совета W3C для окончательного утверждения.
- Working Draft (Рабочий проект) — более зрелая версия черновика после обсуждения и внесения поправок для рассмотрения сообществом.
- Editor’s draft (Редакторский черновик) — черновая версия стандарта после внесения правок редакторами проекта.
- Draft (Черновик спецификации) — первая черновая версия стандарта.
Браузеры
В таблице браузеров применяются следующие обозначения.
- — свойство полностью поддерживается браузером со всеми допустимыми значениями;
- — свойство браузером не воспринимается и игнорируется;
- — при работе возможно появление различных ошибок, либо свойство поддерживается лишь частично, например, не все допустимые значения действуют или свойство применяется не ко всем элементам, которые указаны в спецификации.
Число указывает версию браузера, начиная с которой свойство поддерживается.
Автор и редакторы
Автор: Влад Мержевич
Последнее изменение: 06.08.2018
Редакторы: Влад Мержевич
css — Есть ли CSS-селектор для всех внуков, кроме первого?
В этом JSFiddle как я могу стилизовать все элементы <a>
, кроме первого внука? (abc) с одним селектором? Я хочу избежать двух правил любой ценой.
#outer a:not(:first-child){
color: red;
}
<div>
<div>
<a>abc</a>
<a>def</a>
<a>hij</a>
</div>
<div>
<a>klm</a>
<a>opq</a>
</div>
</div>
1
user2651804 13 Фев 2018 в 13:00
3 ответа
Лучший ответ
Вы можете сделать это (не уверен, сможете ли вы избежать более чем одного селектора)
#outer >div:first-child a:not(:first-child),
#outer >div:not(:first-child) a{
color: red;
border:1px solid;
}
<div>
<div>
<a>abc</a>
<a>def</a>
<a>hij</a>
</div>
<div>
<a>klm</a>
<a>opq</a>
</div>
</div>
1
Temani Afif 13 Фев 2018 в 10:16
Это работает, не совсем уверен, почему!
#outer :not(:first-child) {
color: red;
}
<div>
<div>
<a>abc</a>
<a>def</a>
<a>hij</a>
</div>
<div>
<a>klm</a>
<a>opq</a>
</div>
</div>
0
barro32 13 Фев 2018 в 10:09
Одно правило 2 селектора:
a ~ a
общий братский комбинатор охватывает любой <a>
, следующий за другим <a>
. Это в основном выбирает все, кроме первого <a>
родного брата <a>
.
div:nth-of-type(n+2) a
. Он нацелен на все <a>
внутри второго div и на все предшествующие div в будущем 🟊 .
Демо
a~a,
div:nth-of-type(n+2) a {
color: red
}
<div>
<div>
<a>abc</a>
<a>def</a>
<a>hij</a>
</div>
<div>
<a>klm</a>
<a>opq</a>
</div>
</div>
🟊 Подсказка Темани Афифу за предложение (n+2)
.
1
zer00ne 13 Фев 2018 в 10:30
CSS-псевдокласс получает другие дочерние элементы, кроме первого
Если эффект следующий, псевдо-класс css может его понять ↓↓↓
Для каштана:
<div>
<div>1</div>
<div>2</div>
<div>3</div>
</div>
<style>
.contents{
display: flex;
flex-direction: row;
justify-content: space-around;
}
.contents div{
height: 150px;
line-height: 150px;
width: 150px;
background: #ccc;
text-align: center;
color:#fff;
}
</style>
Способ первый:
: not (селектор) Селектор соответствует каждому элементу, который не является указанным элементом / селектором.
: селектор first-child Выбирает указанный селектор первого дочернего элемента, который принадлежит его родительскому элементу.<style> .contents div:not(:first-child){ background:blue; } </style>
Метод 2:
Используйте nth-of-type () или nth-child ().
(n начинается с 0, затем n + 2 естественным образом начинается со второго элемента. Аналогично, если вы выбираете особый элемент, то это 2n + 1. Элемент, то он должен быть записан как 2n + 2; конкретную ситуацию можно использовать в соответствии с ситуацией в проекте.)
<style>
.contents div:nth-of-type(n+2){
background:blue;
}
</style>
Или:
<style>
.contents div:nth-child(n+2){
background:blue;
}
</style>
Способ 3: Используйте селектор + или ~ умно.
(+ селектор: если вам нужно выбрать элемент сразу после другого элемента, и оба имеют один и тот же родительский элемент, вы можете использовать соседний селектор брата. ~ selector: role Это найти всех братьев и сестер после указанного элемента.)
<style>
.contents div+div{
background:blue;
}
</style>
Или:
<style>
.contents div~div{
background:blue;
}
</style>
Примечание. Различия и эффекты селекторов css Brother (+ и ~) заключаются в следующем:Использование и различие селекторов одноуровневых css (+ и ~)
1. + селектор
Если вам нужно выбрать элемент сразу после другого элемента, и оба имеют один и тот же родительский элемент, вы можете использовать соседний селектор брата. Например:
<p>This is paragraph.</p>
<h2>This is a heading.</h2>
<p>This is paragraph.</p>
<style type="text/css">
h2 + p {
margin-top:50px;
color:red;
}
</style>
Эффект заключается в следующем:
Селектор брата влияет только на стиль тега p ниже, а не на стиль брата выше.
Обратите внимание, что значение «+» отличается от значения «и». Стиль селектора одноуровневого элемента применяется к элементу одноуровневого элемента и не имеет ничего общего со стилем ссылочного элемента. Приведенный выше пример влияет только на стиль элемента p и не влияет на тег h2. стиль. Конечно, это также будет искать в цикле, то есть, когда два родственных элемента одинаковы, он будет искать в цикле:
<div>
<ul>
<li>List item 1</li>
<li>List item 2</li>
<li>List item 3</li>
</ul>
</div>
<style type="text/css">
li + li {
color:red;
}
</style>
После запуска цвет шрифта первого li не становится красным, а шрифты второго и третьего элементов становятся красными, потому что третий li является родственным братом второго li, поэтому стиль также применяется.
2. ~ селектор
— найти все узлы-братья после указанного элемента. Пример кода:
<p>1</p>
<h4>2</h4>
<p>3</p>
<p>4</p>
<p>5</p>
<style type="text/css">
h2 ~ p{
color:red;
}
</style>
После запуска тега h4 шрифт тега p становится красным.
Псевдокласс :not в CSS. Примеры использования
Обычно нам требуется задать некое форматирование для классов, элементов или id. Однако, бывают случаи, когда нужно назначить форматирование для элементов, которые не имеют какого-либо селектора, либо для всех, кроме определенного селектора. Чаще всего таким селектором является селектор класса, хотя это далеко не единственный вариант. Для таких случаев нам понадобится псевдокласс :not.
Псевдокласс :not, по сути, позволяет нам исключить один или несколько тегов по указанному селектору из css-форматирования с заданными правилами. Общий вид записи селектора с использованием этого псевдокласса таков:
селектор1:not(селектор2) { свойства }
селектор1:not(селектор2) { свойства } |
Давайте рассмотрим несколько примеров форматирования элементов с использованием псевдокласса :not.
Форматирование статей, которые не содержат определенный класс
Для всех статей, которые не имеют класса tag-images
, зададим цвет фона, чтобы было заметней.
article:not(.tag-images) { background-color: #b3d5f7; }
article:not(.tag-images) { background-color: #b3d5f7; } |
Выделение цветом в этом случае выполняется для всех статей, кроме тех, которые так или иначе посвящены теме изображений. В примере это статьи по CSS и JavaScript — они выделены голубым фоном. Посмотрим, как это работает:
Псевдокласс :not и мультиклассы
Для страниц в CMS WordPress характерно назначение большого количества классов для элемента body. Например, так:
<body>
<body> |
Для того чтобы отформатировать страницы, не содержащие всего текста статей, можно написать такой селектор:
body:not(.home):not(.single):not(.single-post) { width: 90%; }
body:not(.home):not(.single):not(.single-post) { width: 90%; } |
Изменяем цвет всех элементов списка, кроме первого
Например, для того чтобы задать цвет для всех элементов списка, кроме первого, необязательно добавлять для него класс. Достаточно использовать псевдокласс :not в таком виде:
.testlist li:not(:first-child) { color: green; }
.testlist li:not(:first-child) { color: green; } |
Результат выглядит так, как и планировалось:
- List Item 1
- List Item 2
- List Item 3
- List Item 4
- List Item 5
- List Item 6
Форматируем ячейки таблицы
Примерно такой же вариант форматирования, как для списка, можно использовать для двух столбцов таблицы:
td:not(:nth-child(2)):not(:nth-child(3)){ text-align: center; background-color: #cde; }
td:not(:nth-child(2)):not(:nth-child(3)){ text-align: center; background-color: #cde; } |
В этом случае текст с выравниванием по центру и светло-голубым фоном будут иметь все колонки, кроме второй и третьей.
Наименование | Цвет | Артикул | Цена, грн. |
---|---|---|---|
Стол пластиковый Curver Elise | бежевый | 17180054bj | 1 200 |
Стол пластиковый Curver Lisa бежевый | коричневый | 17180053bj | 792 |
Стул пластиковый Allibert Montreal | серый | 17197675s | 1 224 |
Стул пластиковый Keter Harmony armchair | серо-коричневый | 17201284br | 1 800 |
Псевдокласс :not для форматирования полей формы
Допустим, у нас есть форма, в которой созданы несколько текстовых полей (<input type="text">
, <input type="email">
и <input type="password">
), а также поля типа number (<input type="number">
). Только для текстовых полей нам нужно добавить закругления границы и тень, а также ширину и внутренние отступы. Можно это сделать, перечислив типы нужных полей или исключив ненужные с помощью псевдокласса :not:
input:not([type=»number»]){ padding: 10px; width: 290px; border-radius: 6px; box-shadow: 0 0 6px #9ecbf8; }
input:not([type=»number»]){ padding: 10px; width: 290px; border-radius: 6px; box-shadow: 0 0 6px #9ecbf8; } |
Посмотрим на примере:
Просмотров: 275
CSS псевдоклассы: стилизация элементов по индексам
Internet Explorer Chrome Opera Safari Firefox Android iOS 7.0+ 1.0+ 3.5+ 1.0+ 1.0+ 1.0+ 1.0+ Краткая информация Применяется Ко всем элементам Ссылка на спецификацию http://www.w3.org/TR/CSS21/selector.html#first-child Версии CSS CSS 1 CSS 2 CSS 2.1 CSS 3 Описание Псевдокласс :first-child применяет стилевое оформление к первому дочернему элементу своего родителя. Синтаксис Значения XHTML 1.0 CSS2.1 IE Cr Op […]
6 ответов
одна из версий, которые вы опубликовали работает для всех современных браузеров (где CSS селекторы Уровень 3 are поддерживает):
div ul:not(:first-child) { background-color: #900;}
Если вам нужно поддерживать устаревшие браузеры, или если вам мешает :not селектора ограничение (Она принимает только простой селектор в качестве аргумента), то вы можете использовать следующий метод:
определите правило, которое имеет больший объем, чем то, что вы намереваетесь а затем” отозвать ” его условно, ограничив его объем тем, что вы намереваетесь:
div ul { background-color: #900; /* applies to every ul */}div ul:first-child { background-color: transparent; /* limits the scope of the previous rule */}
при ограничении области используйте значение по умолчанию для каждого атрибута CSS, который вы устанавливаете.
это решение CSS2 (“any ul после очередного ul”) тоже работает, и поддерживается большим количеством браузеров.
div ul + ul { background-color: #900;}
в отличие от :not и :nth-sibling, the селектор соседнего брата поддерживается IE7+.
если у вас JavaScript изменяет эти свойства после загрузки страницы, вы должны посмотреть на некоторые известные ошибки в IE7 и IE8 реализации этого. посмотреть этот ссылка.
для любой статической веб-страницы, это должно прекрасно работать.
С :not не принимаются IE6~8, Я бы предложил вам следующее:
div ul:nth-child(n+2) { background-color: #900;}
так что вы выбираете каждый ul в родительском элементе кроме первого.
обратитесь к Крису Койеру “полезно: nth-детские рецепты” статью nth-child примеры.
div li~li { color: red;}поддерживает IE7
not(:first-child) больше не работает. По крайней мере в последних версиях Chrome и Firefox.
вместо этого попробуйте следующее:
ul:not(:first-of-type) {}
мне не повезло с некоторыми из вышеперечисленных,
Это был единственный, который действительно работал для меня
ul:not(:first-of-type) {}
это сработало для меня, когда я пытался, чтобы первая кнопка, отображаемая на странице, не была произведена с помощью опции margin-left.
это был вариант, который я попробовал сначала, но он не работал
ul:not(:first-child)
Источник: http://askdev.ru/q/kak-ya-mogu-ispolzovat-selektor-not-first-child-1460/
Синтаксис
Селектор:first-child { … }
Источник: http://webref.ru/css/first-child
Recommended Posts:
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to [email protected]. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the «Improve Article» button below.
Источник: http://window-10.ru/css-not-first-child/
PHP-МАСТЕР.
От теории до собственной CMS интернет-магазина
Подробнее
Практический курс по верстке адаптивного сайта с нуля!
Подробнее
Источник: http://webformyself.com/css-psevdoklassy-stilizaciya-elementov-po-indeksam/
Нечётные
Все нечётные номера элементов: 1, 3, 5, 7…
ul li:nth-child(odd) { background: skyblue;}/* или */ul li:nth-child(2n+1) { background: skyblue;}
2
Источник: http://snipp.ru/html-css/nth-child
Обозначения
Описание | Пример | |
---|---|---|
<тип> | Указывает тип значения. | <размер> |
A && B | Значения должны выводиться в указанном порядке. | <размер> && <цвет> |
A | B | Указывает, что надо выбрать только одно значение из предложенных (A или B). | normal | small-caps |
A || B | Каждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке. | width || count |
[ ] | Группирует значения. | [ crop || cross ] |
* | Повторять ноль или больше раз. | [,<время>]* |
+ | Повторять один или больше раз. | <число>+ |
? | Указанный тип, слово или группа не является обязательным. | inset? |
{A, B} | Повторять не менее A, но не более B раз. | <радиус>{1,4} |
# | Повторять один или больше раз через запятую. | <время># |
Источник: http://webref.ru/css/first-child
Пример
first-child B:first-child { color: red; /* Красный цвет текста */ } Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.Результат примера показан на рис. 1. В данном примере псевдокласс :first-child добавляется к селектору b и устанавливает для него красный цвет текста. Хотя контейнер <b> встречается в первом абзаце три раза, красным цветом будет выделено лишь первое упоминание, т. е. текст «Lorem ipsum». В остальных случаях содержимое контейнера <b> отображается чёрным цветом. Со следующим абзацем всё начинается снова, поскольку родительский элемент поменялся. Поэтому фраза «Ut wisis enim» также будет выделена красным цветом.
Рис. 1. Выделение цветом первого дочернего элемента абзаца
<!DOCTYPE html><html> <head> <meta charset=”utf-8″> <title>Меню</title> <style> .links { background: #F6967D; /* Цвет фона */ } .links a { color: #FFFDEB; /* Цвет ссылок */ display: inline-block; /* Строчно-блочный элемент */ border-left: 1px solid #B62025; /* Параметры рамки слева */ padding: 5px 10px; /* Поля вокруг ссылок */ } .links a:first-child { border-left: none; /* Убираем первую линию слева */ } </style> </head> <body> <div class=”links”> <a href=”page/1.html”>uno</a> <a href=”page/2.html”>dos</a> <a href=”page/3.html”>tres</a> <a href=”page/4.html”>cuatro</a> </div> </body></html>
Результат данного примера показан на рис. 2.
Рис. 2. Ссылки с линией слева
Источник: http://webref.ru/css/first-child
Спецификации¶
- Selectors Level 4
- Selectors Level 3
Источник: http://hcdev.ru/css/nth-child/
Поддержка браузерами
BCD tables only load in the browser
Источник: http://developer.mozilla.org/ru/docs/Web/CSS/:first-child
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.
Источник: http://htmlforum.io/topic/41884-notfirst-child/
Автор и редакторы
Автор: Влад Мержевич
Последнее изменение: 06.08.2018
Редакторы: Влад Мержевич
Источник: http://webref.ru/css/first-child
( 1 оценка, среднее 5 из 5 )
псевдокласс CSS, odd, even, первый элемент, каждый второй, третий, четные и нечетные элементы
Автор Андрей На чтение 3 мин. Просмотров 661 Опубликовано
Псевдокласс CSS :nth-child
позволяет вам выбрать один или несколько элементов в соответствии с их порядком следования на странице в соответствии с формулой. Некоторые примеры:
/* Выбрать первый элемент списка */
li:nth-child(1) { }
/* Выбрать 5-й элемент списка */
li:nth-child(5) { }
/* Нечетные элементы начиная с первого */
li:nth-child(odd) { }
/* Выбрать каждый третий элемент списка начиная с первого */
li:nth-child(3n - 2) { }
/* Выбрать каждый 3-й элемент списка начиная со 2-го */
li:nth-child(3n - 1) { }
/* Каждый 3-й элемент, имеющий класс "el" */
.el:nth-child(3n) { }
/* Кроме первого элемента */
:nth-child(n+2) { }
/* Первые три элемента */
:nth-child(-n+3) { }
Допустимые значения псевдокласса
Значение, указываемое в скобках, означает номера элементов, которым будет присвоен определенный стиль, и может быть задан одним из следующих способов:
- слово
odd
– указание всех нечетных элементов-наследников; even
– указание всех четных элементов;- положительное целое число – указание одного элемента;
- формула вида
an + b
, в которой – указание группы элементов, члены которой выбираются с определенной периодичностью – гдеa
,b
– целые числа,n
– счетчик, которому поочередно присваиваются целые положительные значения начиная с 0. Еслиn = 0
, тоan
не указываются,a
иb
могут быть отрицательными.
Первые два способа часто употребляются при оформлении таблиц – для создания контраста между соседними столбцами или строками, что облегчает восприятие информации в случае их большого количества.
Обратиться к нечетным элементам можно как значением – odd
, так и с помощью формулы 2n+1
. Точно так же even
можно заменить формулой 2n
(каждый второй).
На примере мы сделали таблицу, где для четных элементов установили голубой фон для строк, а для нечетных – светло-зеленый.
See the Pen
nth-child by Андрей (@adlibi)
on CodePen.
Несмотря на то что n может быть любым натуральным числом, учитываются лишь результаты вычисления формулы, равные существующим номерам тегов, то есть с #1 по номер, равный числу элементов – наследников данного родителя.
При необходимости можно задавать в одной строке более одного псевдокласса, объединяя накладываемые ими ограничения.
/* выбор второй, третьей и четвертой ячеек строки*/
td :nth-child(n+2):nth-child(-n+4)
или
/* выбор четных ячеек начиная с четвертой */
td:nth-child(n+4):nth-child(even)
А вот цепочка из трех псевдоклассов:
/* происходит отбор четных тегов между 4-м и 12-м включительно */
:nth-child(n+4):nth-child(even):nth-child(-n+12)
Например, требуется назначить определенный стиль для пятой, седьмой и девятой строк таблицы. Для этого нужно объединить три псевдокласса:
tr :nth-child(-n+9) :nth-child(n+5) :nth-child(odd)
Особенности использования
Задавать стиль через псевдокласс :nth-child()
можно двумя способами
- указывая тип выделяемого элемента:
tr :nth-child(2n)
;
- записывая без селектора:
:nth-child(-n+3)
.
В первом случае будут пересчитаны все элементы, но стиль будет присвоен лишь тем из них, тип которых совпадает с указанным в левой части записи.
Во втором – пересчет будет таким же, как и в первом, а стиль получат все четные, независимо от их типа. Это не принципиально, если родитель имеет дочерние элементы только одного типа, как, например, у строки таблицы ячейки.
Но что же делать, если элементы разнородные – например, у заголовка, кроме подзаголовков, есть и абзацы – а стиль нужно присвоить только некоторым подзаголовкам?
На такой случай в CSS припасен другой инструмент, который учитывает теги только определенного типа. Это :nth-of-type()
, еще один псевдокласс. То есть если у вас в списке элементы разного типа, и вы хотите выбрать по определенному правилу только элементы какого-то одного типа, используйте nth-of-type
вместо nth-child
.
Как использовать селектор not: first-child в CSS?
<
html
>
<
head <
head
название
>
<
стиль
>
h2 {
цвет: зеленый;
}
div ul: not (: first-child) {
background-color: green;
цвет: белый;
стиль шрифта: курсив;
font-weight: жирный;
ширина: 60%;
левое поле: 100 пикселей;
}
h2, h3 {
выравнивание текста: по центру;
}
стиль
>
головка
>
000
000
<
h2
> GeeksforGeeks
h2
>
<
h3
> not: first-child 9000 9000
<
div
>
<
ul
style
=
"край слева: 100px"
>
0003
> gfg
li
>
<
9 0003 li > компьютерные фанаты
li
>
<
li
> sudo
li
>
000
<
ul
>
<
li
> Bca
li
>
ca /
ли
>
<
ли
> B.Техника
li
>
ul
>
>
div
>
html
>
: нет | CSS-уловки
Свойство : not ()
в CSS является псевдоклассом отрицания и принимает в качестве аргумента простой селектор или список селекторов.Он соответствует элементу, который не представлен аргументом. Переданный аргумент не может содержать дополнительных селекторов или селекторов псевдоэлементов.
Возможность использовать список селекторов в качестве аргумента считается экспериментальной, хотя на момент написания этой статьи она поддерживалась все шире, включая Safari (с 2015 года), Firefox (с декабря 2020 года) и Chrome (с января 2021 года).
/ * аргумент X можно заменить любыми простыми селекторами * /
: not (X) {
стоимость имущества;
}
В этом примере у нас есть неупорядоченный список с одним классом на
:
-
-
-
Наш CSS выберет все
элементов за исключением элемента (ов) с классом .разные
.
/ * Стилизуйте все, кроме класса .different * /
li: not (.different) {
размер шрифта: 3em;
}
Вы также можете сделать то же самое, используя псевдоклассы, которые считаются простым селектором.
p: not (: nth-child (2n + 1)) {
размер шрифта: 3em;
}
Однако, если мы используем селектор псевдоэлементов в качестве аргумента, он не даст ожидаемого результата.
: not (:: first-line) {/ * :: first-line - это селектор псевдоэлементов, а не простой селектор * /
цвет белый;
}
Сложные селекторы
Это новее, чем базовые селекторы : not ()
.
/ * выбрать все , не являющиеся потомками * /
p: not (article *) {
}
Это может стать немного сложнее, если немного больше вложенности. Например:
h3: not (: where (article *, section *)) {
...
}
/ *
<статья>
Нет совпадений!
<раздел>
Нет совпадений!
<сторона>
Матч!
* /
Наглядный пример
Визуальное представление различных вариантов использования: not ()
Специфичность
Специфика псевдокласса : not
- это специфика его аргумента.Псевдокласс : not ()
не добавляет специфичности селектора, в отличие от других псевдоклассов.
Отрицания не могут быть вложенными, поэтому : not (: not (...))
никогда не допускается. Авторы также должны отметить, что, поскольку псевдоэлементы не считаются простым селектором, они не подходят в качестве аргумента для : not (X)
. Будьте внимательны при использовании селекторов атрибутов, поскольку некоторые из них не так широко поддерживаются, как другие. Допускается соединение : не
селекторов с другими : не
селекторами.
Поддержка браузера
Псевдокласс : not ()
был обновлен в спецификации CSS Selectors Level 4, чтобы разрешить список аргументов. В CSS Selectors Level 3 он мог принимать только один простой селектор. В результате поддержка браузеров немного разделена между черновиками Уровня 3 и Уровня 4.
Простые селекторы
IE | Edge | Firefox | Chrome | Safari | Opera | |
---|---|---|---|---|---|---|
9+ | Все | Все | Все | Все | 1+ | Все |
Android Chrome | Android Firefox | Браузер Android | iOS Safari | Opera Mobile | ||
---|---|---|---|---|---|---|
Все | Все | Все | Все | Все | Все | Все |
Списки выбора
Настольный компьютер
Chrome | Firefox | IE | Edge | Safari |
---|---|---|---|---|
88 | 84 | Нет | 88 | 9044 9044 Мобильный 9044|
Android Chrome | Android Firefox | Android | iOS Safari | |
94 | 92 | 94 | 9.0-9,2 |
Дополнительная информация
Связанные
Игнорирование вашего первого ребенка | Научная лаборатория
И нет, я не говорю о человеческих детях. Я говорю о селекторах CSS!
У меня обычно есть экземпляры в моем веб-дизайне, где я хотел бы применить некоторые стили ко всем элементам определенного типа , кроме первого. Например, при отображении списка навигации я предпочитаю добавлять светлую рамку между каждым элементом списка, но не хочу добавлять границу к первому.Есть несколько способов сделать это, в зависимости от того, какие браузеры вы хотите поддерживать.
Самый простой способ - просто выбрать свой элемент обычно в одном объявлении, а затем выбрать первого дочернего элемента этого элемента с помощью псевдокласса : first-child
, например:
/ * Выбрать все элементы списка. * /
li {
верхняя граница: 1px с точками #ccc;
}
/ * Выбираем элемент списка, который является первым дочерним элементом. * /
li: first-child {
граница-верх: нет;
}
Этот CSS гарантирует, что каждый элемент списка разделен рамкой, и убирает верхнюю границу с первого элемента списка, например:
Конечно, у вас есть дополнительный селектор, который убирает границу для первого потомка.Это тоже нормально, но есть способы написать это объявление с одним селектором для применения стилей к элементам, кроме первого.
Когда впервые появился псевдокласс : not
, для меня это была любовь с первого взгляда. Это удобный маленький селектор, позволяющий выбрать все , кроме элементов, удовлетворяющих определенному условию. Как говорится в документации W3C, это класс с отрицанием .
Итак, используя псевдокласс : not
, мы могли бы переписать наш CSS, чтобы он выглядел так:
/ * Выбрать все элементы списка, кроме первого дочернего.* /
li: not (: first-child) {
верхняя граница: 1px с точками #ccc;
}
Красиво и просто, требует написания только одного объявления CSS вместо двух. Как видите, результат тот же:
Я использовал этот подход во многих дизайнах и по большей части был доволен им. Однако одна проблема заключается в том, что псевдокласс : not
не поддерживается IE8 и более ранними версиями. До недавнего времени, чтобы обойти это, я загружал полифилл JavaScript под названием Selectivizr, чтобы в основном добавить поддержку псевдоклассов CSS3 и некоторых других селекторов в IE 8 и ранее.(Дополнительная информация о Selectivizr, включая добавляемые им функции и документацию о том, как его реализовать, на их веб-сайте.)
Только недавно я понял, что есть лучший способ, поддерживаемый IE8 и IE7, который не требует полифилла JavaScript. Этот способ включает использование смежного одноуровневого селектора, который представляет собой всего лишь знак +
, для выбора только тех элементов списка, которые являются смежными братьями и сестрами другого элемента списка. Используя соседний селектор, наш CSS будет выглядеть так:
/ * Выбираем любой элемент списка, который
смежный брат другого элемента списка.* /
li + li {
верхняя граница: 1px с точками #ccc;
}
Этот селектор не применяет стиль к первому элементу списка, потому что перед ним нет соседнего элемента. И снова результат тот же:
Сейчас мне нравится этот подход, потому что он сохраняет минимальный CSS (нет необходимости отменять стиль с помощью второго селектора, чего я предпочитаю избегать), и он поддерживается вплоть до IE7.
Конечно, есть множество случаев, когда селекторы CSS3, такие как : а не
, являются единственным способом добиться того, что вы хотите, и использование этих селекторов и добавление их поддержки с помощью чего-то вроде Selectivizr - совершенно прекрасный подход.(Я делаю это для многих проектов.) Но лучше убедиться, что есть другие способы написать свои селекторы, которые были бы обратно совместимы, насколько это возможно.
Понимание идентификатора и класса в CSS
Обзор
До сих пор вы добавляли стиль к различным элементам на странице портфолио, но добавленные стили повлияли на все элемента определенного типа. Например, когда вы добавили стиль к элементу div, это одинаково повлияло на все элементы div.Что, если вы хотите стилизовать некоторые элементы div одним способом, а другие элементы div - другим? Вот где на помощь приходят id и class. В этом уроке вы узнаете, как атрибуты ID и Class могут использоваться для стилизации отдельных элементов (id) или групп элементов (class).
Результаты учащихся
По завершении этого упражнения:
- вы сможете определить, как атрибуты ID используются в CSS для включения стилизации отдельных элементов.
- вы сможете определить, как атрибуты класса используются в CSS для включения стилизации групп элементов.
- вы должны добавить атрибуты ID и Class к определенным элементам на веб-странице.
Что такое id?
В HTML каждому элементу на вашей веб-странице может быть присвоен уникальный атрибут id. Это может быть любой текст, который вам нравится, но он должен быть уникальным (эта метка может быть только у одного элемента). Рекомендуется назначать метки, описывающие функцию элемента. Например,
- , который используется для разметки меню навигации, может иметь или
- Вы хотите стилизовать этот элемент иначе, чем другие элементы того же типа.
- Вы хотите иметь возможность ссылаться на определенный элемент на веб-странице. Фактически, вы уже добавляли один из элементов div на странице портфолио, когда создавали ссылку «перейти к основному содержанию» в уроке, посвященном специальным типам ссылок.
- Вы хотите иметь прямой доступ к этому элементу с помощью Javascript. Вы узнаете об этом больше в модуле Javascript.
Вы назначаете атрибут id элементу HTML, когда:
В этом модуле нас просто интересует первая причина для добавления идентификатора. Мы хотим иметь возможность стилизовать определенные элементы с помощью CSS.Например, предположим, что у вас есть абзац, который служит предупреждением на странице. Вы же не хотите, чтобы он выглядел как все остальные абзацы на странице. Вы хотите, чтобы он выделялся, чтобы люди его обязательно заметили. Вы можете добавить к этому абзацу, например:
Важно! Сегодня все занятия отменены.
Чтобы добавить стиль к элементу с идентификатором, вы ставите перед идентификатором символ # в вашем CSS. Например, вот как мы можем сделать так, чтобы наш абзац предупреждения отображался в большом желтом поле с черной рамкой и большим черным текстом:
p # alert { черный цвет; font-weight: жирный; фон: # FFFF66; /* желтый */ граница: сплошной черный цвет 2px; отступ: 1em; }
Обратите внимание, что указание типа элемента в CSS необязательно, если у элемента есть идентификатор.В приведенном выше примере мы используем «p # alert» в качестве селектора, который сообщает браузеру, что следующий стиль применяется к абзацу с идентификатором «alert». Однако, поскольку нет другого элемента - абзаца или другого - с таким же идентификатором, мы могли бы так же легко использовать «#alert», как наш селектор, без «p», например:
#тревога { черный цвет; font-weight: жирный; фон: # FFFF66; /* желтый */ граница: сплошной черный цвет 2px; отступ: 1em; }
Обычно рекомендуется включать элемент, потому что это помогает вам запомнить, какие элементы имеют определенные идентификаторы.Иногда вы захотите узнать это, просто взглянув на файл CSS, без необходимости возвращаться к исходному файлу HTML.
Что такое класс?
Иногда может быть группа элементов, которую вы хотите стилизовать определенным образом. Например, предположим, что вы создаете развлекательную веб-страницу, которая включает в себя несколько обзоров фильмов в дополнение к другому контенту. Все содержание каждого обзора (заголовок с названием фильма плюс несколько абзацев) заключено в
Крестный отец
Крестный отец (1972) - величайший фильм всех времен, согласно многочисленным опросам кинокритиков и зрителей.
Крестный отец ... (ваш отзыв здесь)
Аватар
«Аватар» (2009 г.) - самый кассовый фильм всех времен. зарабатывая примерно 2 доллара.8 млрд.
Аватар ... (ваш отзыв здесь)
Чтобы добавить стиль ко всем элементам, которые являются частью определенного класса, вы ставите перед именем класса точку (.) в вашем CSS. Например, вот как мы могли бы добавить бледно-синий фон и темно-синюю рамку ко всем обзорам фильмов и добавить курсив ко всем абзацам сводки:
div.review { цвет фона: # E6EBF5; /* бледно-синий */ граница: 1px solid # 003399; /* темно-синий */ } п.резюме { стиль шрифта: курсив; }
Селекторы потомков
Помимо присвоения стилей классу элементов , вы также можете назначать стили потомкам этих элементов. Потомок - это элемент, который вложен на в другой элемент, на .
В качестве примера предположим, что вы хотите, чтобы все элементы (ссылки) на странице были красными и подчеркнутыми. Вот как этого добиться в CSS:
a { красный цвет; текст-оформление: подчеркивание; }
Однако предположим, что вам нужен другой стиль для ссылок, которые являются частью вашего меню навигации.Вы хотите, чтобы это был белый текст на темно-синем фоне без подчеркивания. Предполагая, что эти ссылки содержатся в элементе
nav a { цвет белый; цвет фона: # 003399; /* темно-синий */ текстовое оформление: нет; }
В приведенном выше примере селектор nav сообщает браузеру применить определение стиля к каждому элементу , находящемуся внутри элемента
В примере с обзором фильма предположим, что большинство абзацев на вашей развлекательной странице имеют отступы, равные 1em. Однако вы хотите уменьшить это заполнение до 0,75em для всех абзацев, составляющих обзоры фильмов, чтобы обзоры выглядели немного теснее. Поскольку обзоры фильмов заключены внутри элемента
div.review p { заполнение: 0,75 мкм; }
Мероприятия
- Откройте индекс вашего портфеля.html в текстовом редакторе.
- Просмотрите содержимое своей страницы. Он должен содержать один или несколько из следующих элементов:
- <основной>
- Обратите внимание на количество элементов
. Каждый из них в настоящее время имеет одинаковый стиль.Какие из них вы бы хотели стилизовать по-другому? Когда вы думаете об этом, рассмотрите функцию каждого div:- Первый div - это контейнер для ссылки перехода к основному содержанию .
- Второй div - это контейнер для вашей контактной информации.
- Третий блок - это контейнер для информации о вашем курсе и школе.
- Первый div уникален.Он функционально отличается от всех других div, и вы, вероятно, захотите, чтобы он был стилизован иначе. Следовательно, он должен иметь уникальный идентификатор. Назначьте первому div. ПРИМЕЧАНИЕ. Этот div отображается и на других страницах вашего портфолио, поэтому вам нужно будет открыть каждый из других файлов HTML и добавить туда тот же атрибут id.
- Поскольку второй и третий div похожи друг на друга, им может быть назначен класс. Затем, какой бы стиль вы ни применили к этому классу, он будет применяться к обоим этим div.Поскольку оба содержат информацию о чем-то, добавьте атрибут в каждый из этих div.
- Теперь просмотрите абзацы внутри элемента
. Наверху должен быть обзорный абзац. Добавьте к этому абзацу, чтобы его можно было стилизовать иначе, чем другие абзацы. - В настоящее время у вас есть несколько абзацев, которые содержат замещающее содержимое, такое как «Этот раздел скоро будет завершен». Для каждого из этих абзацев добавьте. Это позволит стилизовать содержимое заполнителя иначе, чем завершенное содержимое.При добавлении содержимого в эти разделы в будущем вам нужно будет не забыть удалить этот класс.
Раздаточные материалы / Интернет-документы
Готово?
После того, как вы добавили элементы id и class в каждый из разделов на домашней странице вашего портфолио, у вас теперь есть структура, которая добавляет больше разнообразия стилям на вашей странице. Покажите свою страницу преподавателю, прежде чем перейти к Уроку 2.
Селектор соседних братьев и сестер
Селектор соседних братьев и сестер
Web Review
Июль 2000 г.Как было показано в предыдущих статьях этой серии, в CSS появилось несколько интересных новых селекторов.Между универсальным селектором и дочерним селектором можно создавать селекторы, которые были бы практически невозможны при использовании традиционных селекторов в стиле CSS1.
Что ж, в этом выпуске мы продолжаем тенденцию. Однако на этот раз мы поговорим о том, что практически невозможно сделать с помощью контекстных селекторов. С помощью селектора соседних братьев , вы можете применять стили к элементам на основе элементов, которые непосредственно предшествуют им в документе.
Как это работает
Синтаксис достаточно прост: всего два или более селектора, разделенных знаком плюса (
+
). Самая простая конструкция - это два элемента с плюсом между ними. Выбранным будет элемент, следующий сразу за знаком плюса, но только после элемента, указанного перед плюсом. Например:h2 + P {margin-top: 0;}
Правило будет применяться ко всем абзацам, следующим сразу за элементом
h2
и имеющим одного и того же родителя.Отсюда и название: элементы должны иметь один и тот же родительский элемент, что делает их родственными, и они должны быть смежными друг с другом в дереве документа.Давайте рассмотрим это немного подробнее. Изучите древовидное представление на рисунке 1 на мгновение.
Рисунок 1. Поиск соседних братьев и сестер с помощью дерева документов.Примером соседних элементов являются элементы
EM
иSTRONG
внутри абзаца.Фактически, единственное место на рисунке 1, где элементы не имеют смежных братьев и сестер, - это там, где у них вообще нет братьев и сестер, например, элементA
; и в неупорядоченном списке с тремяLI
дочерними элементами. Там первый и третий элементыLI
не смежные. Первый и второй являются смежными, как и второй и третий, но первый и третий разделены вторым и, следовательно, не являются смежными.Итак, предположим, что мы хотим, чтобы текст
STRONG
был зеленым, но только если он следует за текстомEM
.Правило для этого:EM + STRONG {цвет: зеленый;}
Возвращаясь к рисунку 1, мы видим, что элемент
STRONG
, который является частью абзаца, будет зеленым, а элементSTRONG
, который является частьюLI
, не будет. Обратите внимание, что это правда, несмотря на то, что в абзаце может быть текст, который находится между элементамиEM
иSTRONG
. Например:Этот абзац содержит некоторые выделенный текст и после что мы находим некоторые сильно подчеркнутые текст, который тоже зеленый , несмотря на промежуточный текст.
Текст между элементами не влияет на работу селектора. Это верно даже для блочных элементов. Считайте:
Эй, элемент h4
Вот текст, который является частью DIV, и не содержится в его дочернем элементе.Вот абзац короткий
Мы можем сделать абзац серым по следующему правилу:
h4 + P {цвет: серый;}
Помните, что смежный селектор заботится только об элементах и их месте в структуре документа.Вот почему текст фактически игнорируется. (Технически это часть
DIV
и поэтому живет «на один уровень выше» в дереве документа, как часть родительскогоDIV
.)Комбинирование с другими селекторами
Конечно, предыдущий пример фактически выберет любой абзац, следующий за
h4
, независимо от того, где это происходит в документе. Если мы хотим выбрать только те абзацы, которые следуют за заголовками уровня h4, которые содержатся в пределах подразделения (DIV
), то мы должны написать:DIV h4 + P {цвет: серый;}
Предположим, мы хотим сузить его еще больше: мы хотим, чтобы эта серость возникла только тогда, когда элементы
h4
иP
являются дочерними элементамиDIV
(в отличие от потомков любого уровня).В этом случае пишем:DIV> h4 + P {цвет: серый;}
А теперь давайте немного шире. Предположим, мы хотим, чтобы любой элемент, следующий за
h4
, который является потомкомDIV
, был окрашен в серый цвет. Вы знаете, к чему все это идет, верно?DIV> h4 + * {color: gray;}
Мы тоже можем это изменить. Мы могли бы применить стили к любому элементу, который является потомком
DIV
с классом, помимо
, который следует сразу за таблицей.Кроме того, любые гиперссылки, которые находятся в такомDIV
, должны быть темно-серыми и подчеркнутыми. Таким образом:ТАБЛИЦА + DIV.aside * {color: gray;} ТАБЛИЦА + DIV.aside A: ссылка {color: # 444; украшение текста: подчеркивание;}
Если вы все еще не уверены в том, как это работает, попробуйте взять собственный документ средней сложности и попытаться создать селекторы, которые будут точно адресовать данный элемент, используя все различные селекторы CSS2, которые мы здесь использовали.Небольшая практика поможет вам освоиться с этими селекторами. (Чтобы узнать, какие браузеры помогут вам в этой практике, см. Раздел «Поддержка браузеров» в конце статьи.)
Интересное применение
Ладно, все хорошо, что мы можем делать такие вещи, но что в этом такого? Есть сотни ответов, но вот несколько, которые пришли мне в голову, когда я писал статью.
Обычный эффект печати - это выделить первый абзац статьи курсивом, жирным шрифтом или большим шрифтом, во всяком случае, отличным от остальной части статьи.Предположим, что заголовок статьи представляет собой элемент
h2
, тогда все, что нам нужно, это что-то вроде этого:h2 + P {font-style: italic; размер шрифта: 150%;}
Это также предполагает, что никаких других элементов
h2
не будет в статье, или, если они есть, то ни за одним не будет следовать абзац. Если вы уже классифицируетеh2
, чтобы отметить его как заголовок статьи, вы можете использовать это в своих интересах:h2.заголовок + P {стиль шрифта: курсив; font-size: 150%;}
Вот еще одна возможность. Вы можете изменить стиль каждого элемента в списке, кроме первого. Например, предположим, что вы хотите, чтобы первый элемент в списке был оформлен в обычном стиле, а следующие - серым и немного меньшего размера. Вот правило:
LI + LI {цвет: серый; font-size: 90%;}
Первый
LI
в списке не будет выбран, потому что он не следует сразу за элементом LI, а все остальные делают.Как насчет сокращения расстояния между заголовками и следующими элементами? Авторы всегда пытаются сделать это с помощью классов и других уловок, но с селектором смежных братьев это становится очень легко. Попробуйте это в браузере с поддержкой CSS2:
h2, h3, h4 {margin-bottom: 0,125em;} h2 + *, h3 + *, h4 + * {margin-top: 0,125em;}
Та-да! Обычный размер поля между заголовками и всем, что следует за ними, составляет всего лишь восьмую часть em.Вы, конечно, можете варьировать эту сумму по своему усмотрению. Это можно адаптировать любым количеством способов: вы можете подтягивать списки ближе к абзацам, используя
P + UL
, увеличивать разделение между таблицами, которые непосредственно следуют друг за другом, и любым другим количеством других вещей.Поддержка браузера
Селекторы соседних братьев поддерживаются в Internet Explorer 5.x Macintosh. Они также поддерживаются в предварительном выпуске 1 Netscape 6 для всех бесчисленных платформ, для которых он доступен, и в предварительном выпуске 3 Opera 4 для Windows.В IE5 для Windows и Opera 3 для Windows есть ошибки в обработке селекторов соседних братьев и сестер.
Еще не все
Во многих отношениях селектор по соседству - самый крутой из новых селекторов CSS2. Благодаря добавлению к CSS, очень легко выбрать для определенных обстоятельств, которые многие авторы хотят решить, например, закрытие пространства после заголовков, но до сих пор были вынуждены использовать классы или другие уловки для обработки. В сочетании с такими вещами, как универсальный селектор, открывается широкий спектр возможностей.
В следующей статье мы рассмотрим два новых псевдокласса. Один из них может быть полезен в многоязычных документах, а другой может быть очень полезен в любом документе.
: not () - Псевдокласс отрицания (Как сделать) | Селекторы CSS
Наконец, есть специальный псевдокласс это упомянуто 0:00
как псевдокласс отрицания, потому что он выбирает все, кроме элемента, который мы 0:03
укажите в селекторе и мы можем его использовать практически с любым типом селектора.0:08
Так, например, в нашей таблице стилей давайте создайте один из этих не селекторов. 0:13
Итак, если мы хотим настроить таргетинг на все div, не имеют идентификатора, скажем, столбца A. 0:18
Поэтому нацеливайте все блоки на странице, кроме для этого div с идентификатором вызова A.0:26
Мы можем сделать это с помощью селектора not. 0:30
Итак, давайте сначала создадим наш селектор таргетинг на div, за которым следует двоеточие и 0:33
тогда не тогда круглые скобки. 0:38
Итак, в скобках мы необходимо указать тип 0:41
элемент, на который мы не хотим ориентироваться.0:45
В этом случае мы не хотим нацеливаться на div со столбцом класса a. 0:47
Итак, для каждого div, у которого нет id col-a мы присвоим ему красную рамку. 0:52
Итак, давайте добавим свойство границы и давайте ударьте по значению два сплошного цвета на один пиксель красного цвета.0:58
Хорошо, так что как только мы сохраним нашу таблицу стилей и обновите страницу, 1:03
обратите внимание, как каждый div на странице, кроме для столбца div имеет красный цвет 1:07
граница применена, потому что мы явно сказал браузеру не настраивать таргетинг на него.1:13
И мы также можем включить элемент атрибут и 1:17
значение в аргументе not, и это может быть полезно для стилизации определенных элементов формы. 1:20
Так, например, если мы хотим настроить таргетинг на все элементы ввода в 1:25
наша форма, не имеющая значения типа отправки.1:29
Мы можем это сделать, так что давайте вернемся к нашему не правило, и 1:33
на этот раз между скобками мы необходимо включить набор квадратных скобок, 1:37
а затем внутри скобок мы идем чтобы указать атрибут и значение.1:42
Итак, мы собираемся сказать, что тип равен отправке тогда вместо div 1:45
мы хотим использовать селектор ввода. 1:52
Итак, для элементов ввода, у которых нет тип значение отправки, 1:55
давайте дадим им тень коробки.2:00
Итак, еще раз, мы наберем тень блока свойство, и давайте установим первое 2:02
смещение до нуля, второй один на два пикселей, мы дадим ему нулевое размытие, 2:06
и давайте установим значение RGBA на черный с помощью 000, 2:11
и, наконец, мы дадим ему альфу.15. 2:16
И давайте сделаем тень нашего блока вставкой тень. 2:20
Итак, прямо перед первым значением добавим вставка ключевого слова. 2:24
Итак, теперь, когда мы сохраняем наш файл и 2:28
обновите страницу, обратите внимание, как отправка кнопка не имеет тени блока.2:29
Но два поля ввода над ним имеют эта тень вставки. 2:34
Потому что мы снова сказали браузеру, что для нацеливания на элемент ввода отправки. 2:38
Но можно настроить таргетинг на все остальные входные данные. элементы на странице и 2:43
это именно то, что он здесь делает.2:46
Теперь, наконец, еще один хороший пример использования, который я найдено для не псевдокласса для 2:48
таргетинг на всех, кроме первого или последнего ребенка в ряд столбцов или навигационные ссылки. 2:53
Похоже, нам нужно дать три столбцы левое поле, 2:58
чтобы создать немного больше разделения между столбцы.3:02
Но мы не хотим давать первую колонку здесь левое поле, потому что мы этого хотим 3:05
на одном уровне с левым полем страницы. 3:10
Нам здесь не нужно места. 3:13
Теперь мы можем сказать браузеру оставить это только первый столбец и 3:15
применять только следующее поле к столбцам которые следуют за ним.3:18
И мы можем сделать это, перейдя к нашему стилю лист и давайте создадим новый селектор. 3:21
Позвольте мне добавить здесь немного места. 3:25
На этот раз мы нацелимся на звонок класс, и тогда мы скажем нет. 3:27
И мы будем нацеливаться на каждый элемент вызова это не первый ребенок.3:33
[BLANK_AUDIO] 3:38
И для них мы дадим им значение поля слева в пятнадцать пикселей. 3:41
Хорошо, давайте посмотрим. 3:47
Как только мы обновим страницу, мы увидим, как столбцы B и C получают, что 3:49
просторное левое поле, в то время как столбец A остается выровнен по левому краю страницы.3:54
Мы можем убедиться в этом, как только выделим это. 4:00
Теперь мы можем сделать то же самое для ссылок. вверху. 4:02
Давайте также дадим им это левое поле 15 пикселей. 4:04
Итак, чтобы сделать это.4:07
Мы сгруппируем селектор с новым один, так что на этот раз давайте 4:08
нацелить элемент навигации, и мы собираемся нацелить ссылки внутри этого элемента. 4:11
Итак, мы скажем A, двоеточие, а не и 4:16
набор скобок, и мы собираемся таргетинг на все ссылки, кроме первого дочернего.4:19
И как только мы сохраним нашу таблицу стилей и обновите страницу, как и наши столбцы, 4:26
первая навигационная ссылка не имеет левое поле применено, 4:30
в то время как двое, следующие за ним, делают. 4:35
Итак, снова полезный селектор, который мы можем использовать что мешает нам 4:38
создать дополнительные крючки в нашей разметке и ненужные правила в нашей таблице стилей.4:42
Расширенное руководство по выбору · WebPlatform Docs
Сводка
Это руководство дает подробное объяснение большинства доступных расширенных селекторов CSS.
Введение
В нашей статье «Использование селекторов» мы познакомились с самыми основными селекторами CSS: селекторами элементов, классов и идентификаторов. С помощью этих селекторов вы можете добиться многого, но это, конечно, не исчерпывающий список селекторов - есть другие селекторы, которые позволяют вам выбирать элементы для стиля на основе более конкретных критериев.В этой статье описывается большинство расширенных селекторов CSS.
Примечание. В этой статье обсуждается большинство расширенных селекторов, потому что, хотя большинство современных браузеров поддерживают все селекторы, перечисленные в модуле селекторов CSS3, новые селекторы добавляются и изменяются все время - продолжайте проверять черновик селекторов CSS4 на предмет обновлений. В эту статью будут добавлены новые селекторы, поскольку они получат более широкую поддержку браузеров.
Вы увидите, что многие из этих селекторов используются в наших статьях по мере чтения.Не волнуйтесь, если вы не все сразу поймете: продолжайте ссылаться на эту статью по мере необходимости.
Универсальные переключатели
Универсальные селекторы выбирают каждый элемент на странице. Например, следующее правило гласит, что каждый элемент на странице будет отображать сплошную черную рамку в 1 пиксель:
* { граница: 1px solid # 000000; }
Селекторы атрибутов
Селекторы атрибутов позволяют выбирать элементы на основе содержащихся в них атрибутов.Например, вы можете выбрать каждый элемент
alt
, используя следующий селектор:img [alt] { граница: 1px solid # 000000; }
Обратите внимание на квадратные скобки в приведенном выше примере.
Используя вышеупомянутый селектор, вы могли бы, возможно, добавить черную рамку вокруг любых изображений с атрибутом
alt
и стилизовать другие изображения с ярко-красной рамкой - это полезный метод для тестирования доступности.Выбор по значению атрибута
Селекторы атрибутовмгновенно становятся более полезными, если учесть, что вы можете выбрать по значению атрибута , а не только по имени атрибута. Следующее правило выбирает все изображения со значением атрибута
.src
, равнымalert.gif
:img [src = "alert.gif"] { граница: 1px solid # 000000; }
Опять же, этот стиль полезен для целей отладки. Вы также можете использовать его для стилизации важных значков или ссылок, не требуя дополнительных классов и идентификаторов.означает, что этот селектор влияет на элементы
alert
в начале значения атрибутаsrc
.Вы также можете выбрать элемент
img [src $ = "gif"] { граница: 1px solid # 000000; }
Символ $ указывает, что этот селектор должен выбирать
gif
в конце значения атрибутаsrc
.Это действительно полезно для стилизации ссылок, которые указывают на определенные типы ресурсов, такие как файлы PDF или текстовые документы.И, наконец, вы можете выбрать элемент
img [src * = "ert"] { граница: 1px solid # 000000; }
Символ * указывает, что этот селектор должен влиять на элементы
ert
где-нибудь в пределах значения атрибутаsrc
.Примечание. Эти расширенные селекторы не поддерживаются IE8 и более ранними версиями.
Выбор на основе элементов с разделителями в пределах значения атрибута
Если у вас есть элемент на странице, к которому применено несколько классов, например:
Вы можете выбрать его с помощью любого из следующих селекторов:
статья [class ~ = "Featured"] статья [class ~ = "archive"] статья [class ~ = "english"]
Символ ~ указывает, что эти селекторы должны выбрать элемент
, значение атрибутаclass
которого представляет собой список значений, разделенных пробелами, но только если одно из этих значений является значением, указанным в кавычках.Затем взгляните на элемент на странице со значением идентификатора в виде списка, разделенного дефисами:
Вы можете выбрать его, используя следующий селектор:
статья [id | = "english"]
| означает, что этот селектор должен выбрать элемент
, значение атрибутаid
которого представляет собой список значений, разделенных дефисом, но только если крайнее левое значение -english
.Примечание. Эти селекторы не поддерживаются IE8 и более ранними версиями.
Детский селектор
Вы можете использовать дочерний селектор для выбора определенных элементов, которые являются дочерними по отношению к другим конкретным элементам. Например, следующее правило превратит текст
h4> strong { цвет синий; }
Обратите внимание, что дочерние селекторы не поддерживаются в IE6 или более ранних версиях.
Обратите также внимание на то, что в этом контексте символ> часто называют комбинатором - он объединяет несколько элементов в один селектор.
Селектор потомков
Селекторы потомков аналогичны дочерним селекторам, за исключением того, что дочерние селекторы выбирают только непосредственных потомков; Селекторы потомков выбирают совпадающие элементы в любом месте иерархии элементов, а не только прямых потомков. Узнайте, что это означает, изучив следующий фрагмент HTML:
привет
<статья>В этом абзаце я прощаюсь
В этом фрагменте элемент
является родительским для всех остальных элементов.У него двое детей:
и
. Элемент
имеет единственный дочерний элемент: еще один
.Вы можете использовать дочерний селектор, чтобы выбрать только
непосредственно внутри, например:div> p { … }
Если вместо этого вы используете селектор потомков, как показано ниже:
div p { … }
Затем выбираются оба элемента
.Селектор соседних братьев и сестер
Этот селектор позволяет вам выбрать определенный элемент, который идет сразу после другого конкретного элемента на том же уровне иерархии элементов. Рассмотрим следующий пример:
Мой заголовок
Мой первый абзац
Мой второй абзац
Мой третий абзац
Мой четвертый абзац
Мой пятый абзац
Если вы хотите выбрать только элемент
, который идет сразу после элемента
, которые могут появиться позже в документе), вы можете использовать следующее правило :h3 + p { ... }
Обратите внимание, что соседний селектор сестринского типа не поддерживается в IE6 или более ранних версиях.
Отметим также, что в этом контексте символ + часто называют комбинатором - он объединяет несколько элементов в один селектор.
Селекторы общего назначения
Общий селектор одноуровневого элемента очень похож на соседний одноуровневый селектор, за исключением того, что он позволяет вам выбирать всех братьев и сестер указанного типа элемента, а не только тот, который находится непосредственно рядом с элементом с левой стороны.Синтаксис CSS выглядит так:
h3 ~ p { ... }
Возвращаясь к нашему предыдущему примеру, этот набор правил выберет все пять элементов абзаца, а не только первый. Он также выберет абзац, показанный ниже:
Мой заголовок
Мой подзаголовок
Мой абзац
Обратите внимание, что общий селектор сестринского типа не поддерживается в IE8 или более ранних версиях.
Обратите также внимание на то, что в этом контексте символ ~ часто называют комбинатором - он объединяет несколько элементов в один селектор.
Псевдоклассы
Псевдоклассы используются для предоставления стилей не для элементов, а для различных состояний элементов.
Псевдоклассы ссылок и действий пользователя
Наиболее распространенные псевдоклассы, с которыми вы столкнетесь, - это те, которые используются для стилизации состояний ссылок (они полностью описаны в Списках стилей и ссылках):
-
: ссылка
- нормальное состояние ссылок по умолчанию, отображаемое при первой загрузке страницы в браузере. -
: посещено
- выбирает ссылки, которые вы уже посещали в браузере, который вы используете в данный момент. -
: focus
- выбирает ссылки, внутри которых есть текстовый индикатор (положение курсора). -
: hover
- выбирает ссылки, над которыми в данный момент наведен курсор. -
: активный
- выбирает ссылки, по которым в данный момент щелкают.
Обратите внимание, что последние три из перечисленных выше (называемые «псевдоклассами действий пользователя» - первые два являются псевдоклассами ссылок) могут использоваться для стилизации состояний любого элемента. Они часто используются при стилизации пользовательского интерфейса.Например, вы можете установить другой стиль поля ввода формы, когда оно вставлено вкладками, или вы можете захотеть, чтобы информационное окно отображалось только при наведении курсора на определенную область экрана.
Посмотрите следующие примеры. Приведенные ниже правила CSS применяют стиль ссылки для отображения синих ссылок (в любом случае это стиль ссылок по умолчанию в большинстве браузеров). При наведении курсора подчеркивание ссылки по умолчанию исчезает. Чтобы добиться того же эффекта, когда ссылка находится в фокусе с помощью клавиатуры, правило
: hover
дублируется селектором: focus
.Когда ссылка уже посещена, она становится серой. Наконец, когда ссылка активна, она выделяется жирным шрифтом, как дополнительная подсказка для посетителей о том, что происходит что-то важное.a: link { цвет синий; } а: посетил { цвет: серый; } a: hover, a: focus { текстовое оформление: нет; } a: active { font-weight: жирный; }
Обязательно укажите эти правила в том же порядке, в каком они показаны выше, потому что в противном случае они могут работать не так, как вы ожидаете. Это связано с тем, что из-за специфики более поздние правила таблицы стилей переопределяют более ранние правила.Подробнее о специфичности читайте в статье «Наследование и каскад».
В качестве другого примера, псевдокласс
: focus
также полезен в качестве вспомогательного средства для удобства использования в формах. Например, вы можете выделить поле ввода, внутри которого находится активный мигающий курсор, с помощью следующего правила:input: focus { граница: сплошной черный цвет 2px; цвет фона: светло-серый; }
Псевдокласс отрицания (не)
Псевдокласс отрицания может использоваться для явного применения стилей к элементам, которые не выбраны простым селектором.Например, представьте, что вы хотите применить некоторый стиль к нескольким блокам содержимого, кроме одного. Блоки могли выглядеть так:
... ... ... ... ... ... Вы можете применить стиль ко всем разделам, кроме ссылок, с помощью этого правила:
#abstract, #experiment, #tests, #results, #conclusion { ... }
Или вместо этого вы можете использовать селектор отрицания, например:
section: not (#references) { ... }
Это намного короче и легче читается.
Примечание. Селектор отрицания не поддерживается IE8 и более ранними версиями.
Псевдокласс языка (lang)
Псевдокласс
: lang
выбирает элементы, языки которых были установлены на указанный язык с помощью атрибутаlang
. Например, следующий элемент HTML:Абзац американского текста, ну и дела!
Можно выбрать с помощью следующего:
p: lang (en-US) { ... }
Целевой псевдокласс
Целевой псевдокласс позволяет вам выбрать элемент, если это целевой URL-адреса текущей страницы. Это действительно полезно и позволяет создавать интересные эффекты, поскольку позволяет эффективно устанавливать стили, которые будут применяться при щелчке по ссылкам. Например:
Нажми меня
Woot!Это достигается с помощью простой ссылки, за которой следует
- ссылка ссылается начерез его идентификатор.Текущий URL-адрес нацелен только напри нажатии ссылки. Чтобы стилизоватьтолько при щелчке по ссылке, вы можете использовать следующее правило:div: target { ... }
Чтобы увидеть гораздо более сложный пример использования
: target
, прочтите статью Кори Мвамба под названием «Интерфейсы на основе целевых объектов CSS3».Псевдоклассы состояния элемента пользовательского интерфейса
Все эти псевдоклассы связаны со стилизацией расширенных состояний элементов пользовательского интерфейса.Вы будете чаще всего использовать их для стилизации элементов HTML-форм, особенно когда используются некоторые новые функции HTML5-форм, такие как встроенная проверка. (Для получения дополнительной информации см. [Дополнения к форме HTML5].)
Представьте, что вы задаете стиль ввода базовой формы с
действительным атрибутом
для проверки:Вы можете стилизовать его только в том случае, если введенная в него информация действительна или недействительна, используя эти два правила:
ввод: действителен {}
и
ввод: недопустим {}
Вы также можете стилизовать его в зависимости от того, включен ли он (по умолчанию) или отключен (с использованием атрибута
disabled
), используя этот стиль:ввод: включен {}
и этот стиль:
ввод: отключен {}
Наконец, вы можете стилизовать флажок, только если он установлен, например:
input [type = "checkbox"]: отмечено {}
Структурные псевдоклассы
Структурные псевдоклассы - это расширенные селекторы, которые позволяют выбирать определенные элементы в зависимости от их положения в иерархии документа.Они были введены в CSS3 и основаны на ранее обсуждавшихся селекторах, таких как соседний родственный селектор.
: root
выбирает корневой элемент документа, которым обычно является элементhtml: root {...}
: nth-child (n)
позволяет выбрать повторяющийся шаблон элементов внутри непрерывного набора одинаковых элементов, таких как несколько элементов списка или несколько абзацев или статей рядом друг с другом.Просмотрите этот пример:- Первый
- Второй
- Третий
- Четвертый
- Пятый
- Шестое
- Седьмой
- Восьмой
- Девятая
- Десятый
n
установлен на шаблон, который мы хотим выбрать. В этом случае для выбора элементов списка используйте этот код:li: nth-child (n)
Чтобы выбрать только нечетные или четные элементы списка, добавьте это правило:
li: nth-child (нечетный) li: nth-child (даже)
Или вы можете использовать это правило для достижения того же результата:
li: nth-child (2n + 1) li: nth-ребенок (2n + 0)
Взгляните на другие примеры формул:
-
li: nth-child (5)
: выберите пятый соседний элемент списка. -
li: nth-child (4n + 1)
: выберите каждый четвертый элемент списка и затем добавьте 1 к каждому результату. Итак, числа 5 и 9. -
li: nth-child (3n-2)
: выберите каждый третий элемент списка и вычтите 2 из каждого результата. Итак, числа 1, 4 и 7.
Вы также можете использовать
nth-last-child (n)
. Это делает то же самое, что иnth-child (n)
, но отсчитывается от последнего элемента в последовательности, а не от первого элемента.nth-of-type (n)
иnth-last-of-type (n)
достигают почти тех же целей, что иnth-child (n)
иnth-last-child (n)
, но есть одно важное различие: первые два игнорируют любые мошеннические элементы, перемежающиеся с повторяющейся последовательностью похожих элементов, потому что они выбирают по типу элемента, а не по дочернему номеру.Последний выбирает по дочернему номеру.Вот еще один пример:
1.... 2.... 3.... 4.... 5.... 6....
... 8.... 9.... В этом примере у нас есть
и одним элементом
в середине из них: это дочерний номер шесть.Всего существует девять дочерних элементов.Если вы используете
article: nth-child (2n + 0)
в качестве селектора, чтобы выбрать все четные дочерние элементы, вы должны выбрать только
s в позициях 2, 4 и 8:
(позиция номер шесть) не выбран, потому что это не
.Если вы используете
article: nth-of-type (2n + 0)
в качестве селектора, вы должны выбрать
s в позициях 2, 4, 7 и 9: это происходит потому, что он выбирает по типу элемента, а не дочерней позиции.Поэтому в этом случае
полностью игнорируется и выбираются четные
. Да, два из них имеют нечетные номера в соответствии с моей исходной схемой нумерации, потому что на самом деле
существует и смещает их позицию, ноarticle: nth-of-type (2n + 0)
игнорирует
, эффективно считая позиции 7 и 9 как 6 и 8.Затем проверьте селекторы
: first-child
и: last-child
- эти псевдоклассы выбирают только первый или последний экземпляр элемента, который является первым или последним дочерним элементом своего родителя.Итак, снова рассматривая приведенный выше пример, мы могли бы использовать следующее для выбора - соответственно - первого и последнего элемента
:артикул: первенец {...} article: last-child {...}
blockquote: first-child
ничего не выберет, потому что первый дочерний элемент не
.first-of-type
иlast-of-type
снова работают очень похожим образом, но они выбирают на основе типа элемента, а не положения дочернего элемента.Итак,article: first-of-type
выбирает точно такой же элемент
, что иarticle: first-child
, ноblockquote: first-of-type
выбирает единственный
в примере , потому что это первый в своем роде, даже если это шестой ребенок.Следует рассмотреть еще несколько:
-
only-child
: выбирает элемент, только если он является единственным дочерним элементом своего родителя. Селекторarticle: only-child
ничего не выберет в нашем примере выше, потому что существует более одного дочернего элемента
. -
only-of-type
: выбирает элемент, только если он является единственным родственником своего типа внутри родительского элемента. Итак,blockquote: only-of-type
выберет
в приведенном выше примере, потому что это единственный существующий тип этого типа. -
пусто
: выбирает элемент, только если у него вообще нет дочерних элементов (включая текстовые узлы). Например,div: empty
выберет
или1Привет!
Псевдоэлементы
Псевдоэлементы отличаются от псевдоклассов тем, что они не выбирают состояния элементов; они выбирают части элемента.
: первая буква
Вы можете выбрать первую букву внутри данного элемента, используя следующее правило:
p: первая буква { font-weight: жирный; размер шрифта: 300% цвет фона: красный; }
Первая буква каждого абзаца теперь будет жирной, на 300% больше, чем остальная часть абзаца, и будет иметь красный фон. Это хорошее начало для создания достойного эффекта буквицы.
: первая строка
Чтобы сделать первую строку каждого абзаца жирной, вы можете использовать следующее правило:
р: первая линия { font-weight: жирный; }
Созданный контент с использованием: до и: после
Вы можете использовать псевдоэлементы
: before
и: after
, чтобы указать, что контент должен быть вставлен до и после выбранного элемента.Затем вы указываете контент, который хотите вставить или сгенерировать. Например, вы можете использовать следующее правило для вставки декоративного изображения после каждой ссылки на странице:a: после { content: "" url (flower.gif); }
Вы также можете использовать функцию
attr ()
для вставки значений атрибутов элементов после элемента. Например, вы можете вставить цель каждой ссылки в документе в скобках после каждой, используя следующее:a: после { content: "" "(" attr (href) ")"; }
Это отличный метод для использования в таблице стилей печати, где важно отображать URL-адреса в документе, а не скрывать их внутри текстовых ссылок (которые бесполезны на печатной странице).
Вы также можете вставлять увеличенные числовые значения после повторяющихся элементов (таких как маркеры или абзацы) с помощью функции
counter ()
. Более подробно это объясняется в статье Дэвида Стори под названием [Автоматическая нумерация с помощью счетчиков CSS].Эти селекторы не поддерживаются в IE 7 и более ранних версиях. Также обратите внимание, что вы не должны вставлять важную информацию с помощью CSS, потому что этот контент будет недоступен для вспомогательных технологий. Он также будет недоступен, если посетитель решит не использовать таблицу стилей.Золотое правило состоит в том, что правила CSS предназначены для стилизации; HTML предназначен для отображения важного содержимого.
Синтаксис псевдоэлемента CSS3 с двойным двоеточием
Обратите внимание, что новый способ написания псевдоэлементов в CSS3 заключается в использовании двойного двоеточия, например
.a :: after {…}
, чтобы отделить их от псевдоклассов. Иногда вы можете увидеть это в CSS. CSS3, однако, также позволяет использовать псевдоэлементы с одним двоеточием для обеспечения обратной совместимости. В ближайшем будущем рекомендуется продолжать использовать синтаксис с одним двоеточием.