CSS псевдокласс :nth-child(n)
Псевдокласс :nth-child()
выбирает дочерние элементы на основе их позиции (порядкового номера) внутри родительского элемента.
/* Выбор элемента <p>, если он является вторым дочерним
элементом внутри родительского элемента */
p:nth-child(2) {font-weight: bold;}
Синтаксис
:nth-child(число) { свойства }
В круглых скобках указывается аргумент, который может быть числом, ключевым словом или числовым выражением в виде an+b
, где a
и b
— целые числа, а n
— счётчик, автоматически принимающий целые неотрицательные значения от 0 и больше: 0, 1, 2, 3, ... .
С помощью числа можно указать конкретный порядковый номер дочернего элемента, к которому необходимо применить стиль:
/* выбрать третий по счёту пункт списка */
ul li:nth-child(3) { color: red; }
Всего есть два возможных ключевых слова: odd
(нечётные) и even
(чётные). Они позволяют выбирать дочерние элементы имеющие чётные или нечётные порядковые номера:
/* выбрать все строки в таблице с нечётным
порядковым номером */
tr:nth-child(odd) td { background-color: silver; }
Часть выражения "an
" вычисляет позиции дочерних элементов по следующей формуле: число∗n, так как n
— счётчик, вместо него при вычислении автоматически подставляются числовые значения начиная с 0 и далее значение каждый раз увеличивается на единицу больше предыдущего: 0, 1, 2, 3 и т.д. Допустим нам необходимо выбрать каждый третий пункт списка, для этого нам надо написать всего лишь 3n
:
ul li:nth-child(3n) { color: red; }
Таким образом пункты списка будут выбираться по следующей формуле:
3 ∗ 0 = 0 — ничего не выбрано;
3 ∗ 1 = 3-ий пункт;
3 ∗ 2 = 6-ой пункт и т.д.
Часть выражения "b
" позволяет указать с какой позиции следует начинать выбор элементов. Допустим нам необходимо выбрать каждый третий пункт списка начиная со второго пункта в списке, для этого нам надо написать следующее выражение 3n + 2
:
ul li:nth-child(3n + 2) { color: red; }
Таким образом пункты списка будут выбираться по следующей формуле:
(3 ∗ 0) + 2 = 2-ой пункт;
(3 ∗ 1) + 2 = 5-ый пункт;
(3 ∗ 2) + 2 = 8-ой пункт и т.д.
Пример
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Пример</title>
<style>
tr:nth-child(odd) td { background-color: silver; }
</style>
</head>
<body>
<table>
<tr> <td>текст</td> </tr>
<tr> <td>текст</td> </tr>
<tr> <td>текст</td> </tr>
<tr> <td>текст</td> </tr>
<tr> <td>текст</td> </tr>
<tr> <td>текст</td> </tr>
<tr> <td>текст</td> </tr>
<tr> <td>текст</td> </tr>
<tr> <td>текст</td> </tr>
<tr> <td>текст</td> </tr>
</table>
</body>
</html>
Результат
текст |
текст |
текст |
текст |
текст |
текст |
текст |
текст |
текст |
текст |