CSS властивості
ГлавнаяВерсткаСтруктурний псевдоклас :nth-child()

Структурний псевдоклас :nth-child()

197

Псевдоклас :nth-child() дозволяє вибрати елементи на основі їх положення в групі братських елементів. Загалом цей псевдоклас записується таким чином.

:nth-child(an ± b) { … }

Замість a та b підставляються конкретні цілі числа, а n є лічильником і залишається у вихідному вигляді. Числа a та b можуть бути негативними або нулем, у такому разі їх можна не записувати — 2n+0 ідентично 2n.

Формулу an+b слід розуміти так: вибрати кожен a елемент, починаючи з b. Наприклад, 2n+3 означає вибрати кожен другий елемент, починаючи з третього. Замість n браузер самостійно підставляє числа, починаючи з 0. Тому ми можемо визначити, які елементи будуть вибрані, самостійно замінюючи n числами 0, 1, 2 і т.д. Таким чином, спершу вибереться третій елемент (2×0+3=3), потім п'ятий (2×1+3=5), сьомий (2×2+3=7) і так до кінця. Елементи з нульовим або негативним індексом ігноруються, оскільки таких елементів не існує. .

:nth-child(3)

Виберіть лише третій елемент.

:nth-child(1)

Виберіть перший елемент. Ідентичне використання :first-child.

:nth-child(n+3) 

Вибрати всі елементи, починаючи з третього; іншими словами, всі елементи, крім перших двох.

:nth-child(2n)

Вибрати всі парні елементи. Замість 2n можна використовувати ключове слово even — :nth-child(even).

:nth-child(2n+1)

Вибрати всі непарні елементи. Замість формули можна використовувати ключове слово odd — :nth-child(odd).

:nth-child(-n+3)

Виберіть перші три елементи.

:nth-child(3n)

Виберіть кожен третій елемент.

:nth-child(3n+2)

Виберіть кожен третій елемент, починаючи з другого.

:nth-child(n+2):nth-child(-n +4)

Вибрати всі елементи з другого до четвертого.

У прикладі 1 показано виділення парних колонок таблиці іншим кольором. Таке чергування кольорових смуг полегшує сприйняття таблиці і дозволяє простіше знаходити дані, розташовані в одній колонці. Приклад 1. Колонки таблиці

<!
<html>
<head>
<meta charset="utf-8">
<title>:nth-child()</title> <style> table { width: 100%; } 
th, td { padding: 4px; } 
td:nth-child(even) { background: #c7c7c7; /* Колір тла парних осередків */
} 
td:nth-child(odd) { background: #f0f0f0; /* Колір фону непарних осередків */
}
</style>
</head>
<body> <table> <thead> <tr> <th></th> <th>2023</th><th>2024</th><th>2025</th>
</tr>
</thead> <tbody> <tr> <td>Heft</td> <td>43</td><td>51</td><td>79</td>
</tr> <tr> <td>3олото</td> <td>29</td><td>34</td><td>48</td>
</tr> <tr> <td>Дерево</td> <td>38</td><td>57</td><td>36</td>
</tr>
</tbody>
</table>
</body>
</html>

Результат цього прикладу показаний на рис. 1.

Колонки таблиці

Мал. 1. Колонки таблиці

Слід пам'ятати, що :nth-child() працює тільки для однотипних братських елементів, на зразок < ;li>, <td>, <tr> та ін У наведеному нижче прикладі братськими (мають) спільного батька) є елементи <li>. При цьому елементи <a> не є братніми, тому що кожен з них має власний батько.

<code data-language="html"><ul> <li><a>Посилання</a></li> <li><a>Посилання</a></li> <li><a>Посилання</a></li>
</ul>

В результаті селектор a:nth-child(2) для вибору другого посилання не працює. Щоб дістатися до неї, слід скористатися комбінованими селекторами. Звертаємось до другого пункту списку <li>, а вже потім до посилання <a>.

li:nth-child(2) > a { color: green; }