Кратко
СкопированоПсевдоклассы -of-type позволяют выбирать из группы элементы одного уровня вложенности на основании их порядка:
:first— первый;- of - type :nth— каждый n-й элемент;- of - type ( n - число ) :last— последний;- of - type :nth— каждый n-й элемент с отсчётом «с конца».- last - of - type ( n - число )
Пример
СкопированоДопустим, мы имеем такую HTML-разметку:
<ol class="list"> <li>Default означает «по умолчанию», цвет этого пункта без изменений.</li> <li class="list__item">Амбары красят в красный цвет, потому что красная краска...</li> <li>Говорят, в СССР красили подъезды в зелёный цвет, потому что осталось...</li> <li class="list__item">В Катаре красят асфальт в синий цвет, чтобы он не перегревался.</li> <li class="list__item">Газовые трубы красят в жёлтый цвет по ГОСТ 14202-69.</li> <li class="list__item">Розы красят в синий цвет при помощи пищевых красителей.</li> <li class="list__item">Чёрный на чёрном не виден.</li></ol>
<ol class="list">
<li>Default означает «по умолчанию», цвет этого пункта без изменений.</li>
<li class="list__item">Амбары красят в красный цвет, потому что красная краска...</li>
<li>Говорят, в СССР красили подъезды в зелёный цвет, потому что осталось...</li>
<li class="list__item">В Катаре красят асфальт в синий цвет, чтобы он не перегревался.</li>
<li class="list__item">Газовые трубы красят в жёлтый цвет по ГОСТ 14202-69.</li>
<li class="list__item">Розы красят в синий цвет при помощи пищевых красителей.</li>
<li class="list__item">Чёрный на чёрном не виден.</li>
</ol>
И, допустим, нам нужно задать цвет текста каждого из пунктов, основываясь на их порядке.
Этот пункт не имеет класса, всё, что мы о нём знаем — что он третий <li> по порядку:
li:nth-of-type(3) { color: #41E847;}
li:nth-of-type(3) {
color: #41E847;
}
2-й, 4-й, 6-й пункты с классом .list имеют синий цвет, т. е. каждый чётный:
.list__item:nth-of-type(2n) { color: #2E9AFF;}
.list__item:nth-of-type(2n) {
color: #2E9AFF;
}
Нечётные элементы записываются как :nth.
5-й <li> (или 3-й .list) — жёлтый:
li:nth-of-type(5),.list__item:nth-of-type(3) { color: #FFD829;}
li:nth-of-type(5),
.list__item:nth-of-type(3) {
color: #FFD829;
}
Последний пункт должен быть белым (укажем это и для тега, и для класса):
li:nth-last-of-type(1),.list__item:last-of-type { color: #FFFFFF;}
li:nth-last-of-type(1),
.list__item:last-of-type {
color: #FFFFFF;
}
Если нам нужно выбрать единственный элемент своего родителя, используется псевдокласс :only (что эквивалентно комбинации :first):
Как пишется
Скопировано💡 Как и у всех псевдоклассов, слева от :-разделителя можно указать дополнительный селектор, к которому нужно применить правило. Если его не указать, правило будет применено для каждого подходящего элемента.
Для порядковых псевдоклассов (:nth и :nth) для обозначения кратности (каждый n-й элемент) используется запись в формате целое число плюс буква n, например:
p:nth-of-type(4n) { /* Стили */}
p:nth-of-type(4n) {
/* Стили */
}
Будет выбран каждый 4-й элемент (если таковой будет в общем родителе на одном уровне вложенности).
Для обозначения чётных или нечётных элементов можно использовать числовое выражение.
Выберет все чётные элементы:
p:nth-of-type(2n) { /* Стили */}
p:nth-of-type(2n) {
/* Стили */
}
Выберет все нечётные элементы:
p:nth-of-type(2n + 1) { /* Стили */}
p:nth-of-type(2n + 1) {
/* Стили */
}
Также для обозначения чётных или нечётных элементов можно использовать именованную форму:
Выберет все чётные элементы — то же самое, что p:
p:nth-of-type(even) { /* Стили */}
p:nth-of-type(even) {
/* Стили */
}
Выберет все нечётные элементы — то же самое, что p:
p:nth-of-type(odd) { /* Стили */}
p:nth-of-type(odd) {
/* Стили */
}
Аргументы
СкопированоДля числовых псевдоклассов (:nth и :nth) обязательно наличие n-числа в аргументах.
Подсказки
Скопировано💡 Выбор первого (:first) или последнего (:last) элемента «грамматически» эквивалентен числовому формату — :nth для первого элемента и :nth для последнего соответственно, но не требует указания числа-аргумента.
💡 Если нужно выбрать такой элемент, который внутри своего родителя только в единственном экземпляре, используйте :only.
На практике
Скопированосоветует
Скопировано🛠 Эти псевдоклассы используются реже, чем Псевдоклассы группы child, но иногда нужно выбрать именно из списка однотипных элементов, а не из всех детей своего родителя.