:nth-child()
Wybiera elementy według pozycji wśród rodzeństwa: co drugi, co trzeci, pierwsze trzy albo wszystkie od siódmego.
Przykład
#tbody tr:nth-child(even) {
background: #18181b;
}<style>
table { width: 100%; border-collapse: collapse; font-size: 14px; }
th, td { padding: 6px 10px; text-align: left; }
th + th, td + td { text-align: right; }
thead { color: #a1a1aa; }
</style>
<table>
<thead><tr><th>Gracz</th><th>EXP</th></tr></thead>
<tbody>
<tr><td>Ania</td><td>1240</td></tr>
<tr><td>Bartek</td><td>1180</td></tr>
<tr><td>Celina</td><td>990</td></tr>
<tr><td>Darek</td><td>870</td></tr>
</tbody>
</table>Definicja i zastosowanie
#Pseudoklasa :nth-child() numeruje wszystkie dzieci rodzica, zaczynając od 1, i wybiera te, których numer pasuje do argumentu. Argumentem może być konkretna liczba (3), słowo odd (nieparzyste) albo even (parzyste) lub wzór An+B.
Wzór An+B czyta się tak: przeglądarka podstawia za n kolejno 0, 1, 2, 3… i wybiera elementy o numerach, które wyjdą. 2n+1 daje 1, 3, 5, czyli to samo co odd, 3n daje 3, 6, 9, a -n+3 daje 3, 2, 1, czyli pierwsze trzy elementy. Wyniki mniejsze od 1 są pomijane.
Tak jak :first-child, pseudoklasa liczy wszystkie elementy rodzica bez względu na znacznik i klasę. Selektor .card:nth-child(2) wybierze drugie dziecko, jeśli ma klasę card, a nie drugą kartę. Rozwiązuje to składnia :nth-child(2 of .card): najpierw zostają elementy pasujące do selektora po of, a dopiero potem są numerowane. Działa we wszystkich głównych przeglądarkach od 2023 roku.
Do liczenia od końca służy :nth-last-child(), a do liczenia tylko elementów tego samego znacznika :nth-of-type().
Składnia
#:nth-child( <liczba> | odd | even | An+B [of <selektor>]? )Argumenty
#1, 3, 5, 7, 9
Elementy nieparzyste. Klasyczne paski w tabelach i na listach.2, 4, 6, 8, 10
Elementy parzyste, czyli to samo co wzór2n.3
Dokładnie trzecie dziecko rodzica.3, 6, 9
Co trzeci element, czyli numery będące wielokrotnością trójki.1, 4, 7, 10
Co trzeci, zaczynając od pierwszego. W siatce o trzech kolumnach to cała pierwsza kolumna.1, 2, 3
Pierwsze trzy elementy. Dla n = 0, 1, 2 wychodzi 3, 2, 1, a dalsze wyniki są mniejsze od 1 i odpadają.7, 8, 9, 10
Od siódmego elementu do samego końca, ile by ich nie było.drugi z .hot
Najpierw zostają elementy z klasąhot(z żółtą ramką), potem są numerowane od 1. Wybrany jest element 4, drugi z nich.
Argumenty w praktyce
#odd
span:nth-child(odd) { background: #7c3aed; color: #fff; }even
2n.span:nth-child(even) { background: #7c3aed; color: #fff; }3
span:nth-child(3) { background: #7c3aed; color: #fff; }3n
span:nth-child(3n) { background: #7c3aed; color: #fff; }3n+1
span:nth-child(3n+1) { background: #7c3aed; color: #fff; }-n+3
span:nth-child(-n+3) { background: #7c3aed; color: #fff; }n+7
span:nth-child(n+7) { background: #7c3aed; color: #fff; }2 of .hot
hot (z żółtą ramką), potem są numerowane od 1. Wybrany jest element 4, drugi z nich.span:nth-child(2 of .hot) { background: #7c3aed; color: #fff; }Więcej przykładów
#.ranking li:nth-child(-n+3) {
color: #fbbf24;
font-weight: 700;
}<ol class="ranking stage" style="display: grid; gap: 4px; margin: 0; padding: 10px 10px 10px 34px; color: #a1a1aa;">
<li>Ania, 1240 EXP</li>
<li>Bartek, 1180 EXP</li>
<li>Celina, 990 EXP</li>
<li>Darek, 870 EXP</li>
<li>Ewa, 640 EXP</li>
</ol>Wzór -n+3 zawsze wybiera pierwsze trzy miejsca, niezależnie od długości listy.
Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- Wzór łatwo sprawdzić w pamięci: podstaw za
nliczby 0, 1, 2, 3 i zobacz, jakie numery wyjdą. - Pamiętaj, że liczone są wszystkie dzieci rodzica. Jeśli w środku mieszają się różne elementy, użyj
:nth-of-type()albo składniof S. - Paski w tabelach (
tr:nth-child(even)) to klasyczne zastosowanie: ułatwiają śledzenie wzrokiem długich wierszy.
Powiązane hasła
#- :nth-of-type()Wybiera elementy według pozycji wśród rodzeństwa z tym samym znacznikiem, na przykład co drugi obrazek albo trzeci akapit.
- :first-childPasuje do elementu, który jest pierwszym dzieckiem swojego rodzica.
- :last-childPasuje do elementu, który jest ostatnim dzieckiem swojego rodzica.
- :not()Wybiera elementy, które nie pasują do podanego selektora ani do żadnego z listy.
- :is()Dopasowuje element do dowolnego selektora z listy. Skraca długie, powtarzalne selektory do jednego zapisu.
Widzisz błąd albo brakuje przykładu? Napisz do nas.