child() | HTML и CSS с примерами кода
Псевдокласс :nth-child
используется для добавления стиля к элементам на основе нумерации в дереве элементов.
- :active
- :any-link
- :blank
- :checked
- :current()
- :default
- :defined
- :dir()
- :disabled
- :empty
- :enabled
- :first
- :first-child
- :first-of-type
- :focus
- :focus-visible
- :focus-within
- :fullscreen
- :future
- :has()
- :host
- :host()
- :host-context()
- :hover
- :indeterminate
- :in-range
- :invalid
- :is()
- :lang()
- :last-child
- :last-of-type
- :left
- :link
- :local-link
- :not()
- :nth-child()
- :nth-col()
- :nth-last-child()
- :nth-last-col()
- :nth-last-of-type()
- :nth-of-type()
- :only-child
- :only-of-type
- :optional
- :out-of-range
- :past
- :placeholder-shown
- :read-only
- :read-write
- :required
- :right
- :root
- :scope
- :target
- :target-within
- :user-invalid
- :valid
- :visited
- :where()
Синтаксис
/* Выбирает каждый четвёртый элемент среди любой группы соседних элементов */ :nth-child(4n) { color: lime; }
Значения
odd
- Все нечётные номера элементов.
even
- Все чётные номера элементов.
<число>
- Порядковый номер дочернего элемента относительно своего родителя. Нумерация начинается с 1, это будет первый элемент в списке.
<выражение>
- Задаётся в виде
an±b
, гдеa
иb
— целые числа, аn
— счётчик, который автоматически принимает значение0
,1
,2
… - Если
a
равно нулю, то оно не пишется и запись сокращается доb
. Еслиb
равно нулю, то оно также не указывается и выражение записывается в формеan
.a
иb
могут быть отрицательными числами, в этом случае знак плюс меняется на минус, например:5n-1
.
За счёт использования отрицательных значений a
и b
некоторые результаты могут также получиться отрицательными или равными нулю. Однако на элементы оказывают влияние только положительные значения из-за того, что нумерация элементов начинается с 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) { /* … */ }
Спецификации
- Selectors Level 4
- Selectors Level 3
Примеры
Пример 1
<!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).
Пример 2
HTMLCSSРезультат
<h4> <code>span:nth-child(2n+1)</code>, БЕЗ элемента <code><em></code> в группе элементов-потомков. </h4> <p>Элементы 1, 3, 5 и 7 будут выбраны.</p> <div> <span>Span 1!</span> <span>Span 2</span> <span>Span 3!</span> <span>Span 4</span> <span>Span 5!</span> <span>Span 6</span> <span>Span 7!</span> </div> <br /> <h4> <code>span:nth-child(2n+1)</code>, С элементом <code><em></code> в группе элементов-потомков. </h4> <p> Элементы 1, 5 и 7 будут выбраны.<br /> 3 используется в подсчёте потому что это элемент-потомок, но он не выбран потому что он не <code><span></code>. </p> <div> <span>Span!</span> <span>Span</span> <em>Это `em`.</em> <span>Span</span> <span>Span!</span> <span>Span</span> <span>Span!</span> <span>Span</span> </div> <br /> <h4> <code>span:nth-of-type(2n+1)</code>, С элементом <code><em></code> в группе элементов-потомков. </h4> <p> Элементы 1, 4, 6 и 8 будут выбраны.<br /> 3 не используется в подсчёте и не выбран, потому что это <code><em></code>, но не <code><span></code>, а <code>nth-of-type</code> выбирает только потомков этого типа. Элемент <code><em></code> полностью пропускается и игнорируется. </p> <div> <span>Span!</span> <span>Span</span> <em>Это `em`.</em> <span>Span!</span> <span>Span</span> <span>Span!</span> <span>Span</span> <span>Span!</span> </div>
html { font-family: sans-serif; } span, div em { padding: 5px; border: 1px solid green; display: inline-block; margin-bottom: 3px; } . first span:nth-child(2n + 1), .second span:nth-child(2n + 1), .third span:nth-of-type(2n + 1) { background-color: lime; }
См. также
:nth-of-type
:nth-last-child
Ссылки
- Псевдо-класс
:nth-child
MDN (рус.)
CSS-псевдокласс :nth-last-child()сопоставляет элементы на основе их положения в группе братьев и сестер,считая с конца.
:nth-last-child()
CSS псевдо-класс соответствует элементы , основанные на их положении между группой братьев, считая от конца.
Try it
Syntax
nth-last-child
псевдо-класс определен с одним аргументом, который представляет собой образец для сопоставления элементов, считая от конца.
:nth-last-child( <nth> [ of <complex-selector-list> ]? )
Keyword values
odd
Представляет элементы,у которых числовое положение в серии братьев и сестер нечетное:1,3,5 и т. д.,считая от конца.
even
Представляет элементы,числовое положение которых в серии братьев и сестер равномерно:2,4,6 и т.д.,считая от конца.
Functional notation
<An+B>
Представляет элементы, чье числовое положение в серии элементов одного уровня соответствует шаблону
An+B
для каждого положительного целого или нулевого значенияn
. Индекс первого элемента, считая с конца, равен1
. ЗначенияA
иB
должны быть оба<integer>
с.
Examples
Example selectors
-
tr:nth-last-child(odd)
илиtr:nth-last-child(2n+1)
Представляет нечетные строки таблицы HTML:1,3,5 и т.д.,считая от конца.
-
tr:nth-last-child(even)
илиtr:nth-last-child(2n)
Представляет четные строки HTML-таблицы:2,4,6 и т. д.,считая от конца.
:nth-last-child(7)
Представляет седьмой элемент,считая от конца.
Представляет элементы 5,10,15 и т.д.,считая от конца.
:nth-last-child(3n+4)
Представляет элементы 4,7,10,13 и т.д.,считая от конца.
:nth-last-child(-n+3)
Представляет последние три элемента среди группы братьев и сестер.
-
p:nth-last-child(n)
илиp:nth-last-child(n+1)
Представляет каждый элемент
<p>
среди группы братьев и сестер. Это так же, как простойp
селектор. (Посколькуn
начинается с нуля, а последний элемент начинается с единицы,n
иn+1
выберут одинаковые элементы.)-
p:nth-last-child(1)
илиp:nth-last-child(0n+1)
Представляет каждый
<p>
, который является первым элементом среди группы братьев и сестер, считая с конца. Это то же самое, что и селектор:last-child
.
Table example
HTML
<table> <tbody> <tr> <td>First line</td> </tr> <tr> <td>Second line</td> </tr> <tr> <td>Third line</td> </tr> <tr> <td>Fourth line</td> </tr> <tr> <td>Fifth line</td> </tr> </tbody> </table>
CSS
table { border: 1px solid blue; } / * Выбирает последние три элемента * / tr:nth-last-child(-n+3) { background-color: pink; } / * Выбирает каждый элемент, начиная со второго до последнего * / tr:nth-last-child(n+2) { color: blue; } / * Выбираем только последний второй элемент * / tr:nth-last-child(2) { font-weight: 600; }
Result
Quantity query
А количество запросов стилей элементов в зависимости от того , сколько из них есть. В этом примере элементы списка становятся красными, если в данном списке их хотя бы три. Это достигается за счет объединения возможностей псевдокласса nth-last-child
и общего одноуровневого комбинатора .
HTML
<h5>A list of four items (styled):</h5> <ol> <li>One</li> <li>Two</li> <li>Three</li> <li>Four</li> </ol> <h5>A list of two items (unstyled):</h5> <ol> <li>One</li> <li>Two</li> </ol>
CSS
/ * Если есть по крайней мере три элемента списка, стилизуем их все * / li:nth-last-child(n+3), li:nth-last-child(3) ~ li { color: red; }
Result
Specifications
Specification |
---|
Селекторы уровня 4 # nth-last-child-pseudo |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | |
:nth-last-child | 4 | 12 | 3. 5 | 9 | 9 | 3.1 | ≤37 | 18 | 4 | 10.1 | 2 | 1.0 |
no_parent_required | 57 | 79 | 52 | No | 44 | No | 57 | 57 | 52 | 43 | No | 7.0 |
of_syntax | No См. Ошибку 304163 . | No См. Ошибку 304163 . | No Смотрите ошибку 854148 . | No | No См. Ошибку 304163 . | 9 | No См. Ошибку 304163 . | No См. Ошибку 304163 . | No Смотрите ошибку 854148 . | No См. Ошибку 304163 . | 9 | No См. Ошибку 304163 . |
See also
-
:nth-child
,:nth-last-of-type
- Количество запросов для CSS
- 1
- …
- 74
- 75
- 76
- 77
- 78
- …
- 865
- Next
:nth-last-col
css — выберите второго ребенка
спросил
Изменено 4 года, 7 месяцев назад
Просмотрено 76 тысяч раз
Я пытаюсь использовать это, чтобы выбрать второй тег из списка:
. container li a:first-child + a { ... }
, но это не работает. Есть ли другой, идеально чистый способ CSS (кроме a:nth-child(2)
) или кто-нибудь может увидеть, где я ошибся?
- css
- css-селекторы
2
Убедитесь, что ваш
на самом деле имеет два элемента
в качестве первых двух дочерних элементов, а не некоторые другие элементы вокруг них, поскольку они могут сделать недействительными :first-child
и соседние селекторы родственных элементов.
Если вы просто хотите выбрать второй
независимо от того, какие другие типы элементов есть в вашем
, используйте этот селектор:
.container li a:nth-of-type(2)
Если ваш
будет иметь ровно 2 элемента
, вы можете использовать общий комбинатор родственных элементов ~
для дополнительной поддержки IE7/IE8:
. container li a ~ a
Или вы имели ввиду найти элемент во втором
, а не второй элемент
в
(поскольку «список», вероятно, относится к
или
здесь)? Если это так, вам понадобится любой из этих селекторов:
.container li:first-child + li a .container li:nth-child(2) a
3
Я подозреваю, что ваши якоря находятся в элементах списка:
В этом случае вы должны переписать стиль на:
.container li:first-child + li a { ... }
0
Просто используйте :nth-of-type
:
.container li a:nth-of-type(2) { /* ... */ }
Проблема здесь, вероятно, в том, что первый не является первым потомком, или второй
не является смежным с ним. В любом случае,
:nth-of-type
— правильный способ сделать это.
Если у вас есть один
на
, то вы, вероятно, имеете в виду .container li:nth-of-type(2) a
.
Использовать nth-child(2)
.container li a:nth-child(2){....}
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Обязательно, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
css — В чем разница между p:nth-child(2) и p:nth-of-type(2)?
Этот вопрос может напомнить вам В чем разница между :first-child и :first-of-type? — и на самом деле между ними можно провести много параллелей . Чем этот вопрос сильно отличается от другого, так это произвольным целочисленным аргументом X, например, :nth-child(X)
и :nth-of-type(X)
. В принципе они аналогичны своим «первому» и «последнему» аналогам, но потенциально совпадающие элементы сильно различаются в зависимости от того, что на самом деле находится на странице.
Но сначала немного теории. Помните, что простые селекторы — это независимые условия. Они остаются независимыми даже при объединении в составные селекторы. Это означает, что p
не зависит и не влияет на то, как :nth-child() соответствует
или :nth-of-type()
. Объединение их таким образом просто означает, что элементы должны соответствовать всем своим условиям одновременно , чтобы соответствовать.
Здесь все становится интереснее. Это независимое сопоставление означает, что я могу довольно творчески выражать составные (и сложные) селекторы в терминах простого английского языка, без изменения значения селекторов . На самом деле, я могу сделать это прямо сейчас таким образом, чтобы разница между :nth-child(2)
и :nth-of-type(2)
казалась настолько значительной, что псевдоклассы могли бы совершенно не связанные друг с другом (за исключением части «братьев и сестер»):
Внезапно они звучат совсем по-другому! И здесь помогает небольшое пояснение.
Любой элемент может иметь только один дочерний элемент, соответствующий :nth-child(X)
для любого целого числа X за раз. Вот почему я решил подчеркнуть «второго ребенка», упомянув его первым. Кроме того, этот дочерний элемент будет соответствовать p:nth-child(X)
только в том случае, если он имеет тип p
(помните, что «тип» относится к тэгу). Это очень похоже на :first-child
и :last-child
(и аналогично p:first-child
и p:last-child
).
Есть два аспекта :nth-of-type(X)
с другой стороны:
Поскольку «тип» в
:nth-of-type()
— это то же понятие, что и «тип» в селекторе типа, это семейство псевдоклассов предназначено для использования вместе с селекторами типов (даже несмотря на то, что они по-прежнему работают независимо). Вот почемуp:nth-of-type(2)
можно кратко выразить так: «Выбрать второй элементp
среди его братьев и сестер». Это просто работает!Однако, в отличие от
:first-of-type
и:last-of-type
, X требует, чтобы внутри их родительского элемента действительно было столько же дочерних элементов одного типа. Например, если в родительском элементе есть только один элементp
,p:nth-of-type(2)
не будет соответствовать ничему внутри этого родителя, даже если этот элементp
гарантированно соответствуетp:first- of-type
иp:last-of-type
(а также, соответственно,p:только тип
).
Иллюстрация:
<дел>Абзац
Абзац
Абзац
Заголовок Абзац
Абзац
Абзац