chevron-left chevron-right

Piotr Nalepa Frontend, architektura i AI

[CSS] Magia selektora :nth-child – jak tego używać?

Ta wersja
blog.piotrnalepa.pl/2011/06/22/css-magia-selektora-nth-child-jak-tego-uzywac
Opublikowano
Autor
, Staff Software Engineer
Kategoria
CSS
Uwagi
Napisz do mnie · Napisz na X

Ten wpis ma 15 lat. Od tego czasu przeglądarki i narzędzia mogły się zmienić, więc zanim użyjesz kodu, sprawdź go z aktualną dokumentacją.

Dzisiejszy artykuł będzie dotyczył sposobów wykorzystania pseudoselektorów na stronach WWW. Pseudoselektory o których dzisiaj będzie mowa to:

  • :nth-child
  • first-child
  • last-child
  • nth-last-child

Z pomocą selektorów powyżej można dokonywać magii, no i przyda się trochę wiedzy matematycznej do obliczania pozycji 😉

Sekcja 1Wybierz tylko trzeci element z grupy

By wybrać 3-ci element z danej grupy, na przykład listy nieuporządkowanej, możemy wykorzystać następujący kod:

[CSS] Magia selektora :nth-child - jak tego używać? - Przykład 1
Przykład 1CSS
1
2
3
4
li:nth-child(3) {
    background: #b30;
    padding: 9px;
}

Sekcja 2Wybierz wszystkie poza pierwszymi trzema elementami

Jest to przydatne w momencie gdy mamy więcej niż 3 elementy w grupie.

[CSS] Magia selektora :nth-child - jak tego używać? - Przykład 2
Przykład 2CSS
1
2
3
4
li:nth-child(n+4) {
    background: #b30;
    padding: 9px;
}

Jeśli mamy 4 elementy w grupie to bardziej sensowną metodą pozyskania ostatniego elementu będzie wykorzystanie :last-child.

Sekcja 3Wybierz tylko pierwsze 3 elementy

W przeciwieństwie do przykładu powyżej teraz wykorzystamy wartości ujemne:

[CSS] Magia selektora :nth-child - jak tego używać? - Przykład 3
Przykład 3CSS
1
2
3
4
li:nth-child(-n+3) {
    background: #b30;
    padding: 9px;
}

Sekcja 4Wybierz co trzeci element z grupy

[CSS] Magia selektora :nth-child - jak tego używać? - Przykład 4
Przykład 4CSS
1
2
3
4
li:nth-child(3n+1) {
    background: #b30;
    padding: 9px;
}

Sekcja 5Wybierz parzyste elementy

[CSS] Magia selektora :nth-child - jak tego używać? - Przykład 5
Przykład 5CSS
1
2
3
4
li:nth-child(even) {
    background: #b30;
    padding: 9px;
}

Sekcja 6Wybierz nieparzyste elementy

[CSS] Magia selektora :nth-child - jak tego używać? - Przykład 6
Przykład 6CSS
1
2
3
4
li:nth-child(odd) {
    background: #b30;
    padding: 9px;
}

Sekcja 7Wybierz ostatni element

Tak jak wspomniałem wcześniej w tym celu użyjemy pseudoselektora :last-child zamiast :nth-child.

[CSS] Magia selektora :nth-child - jak tego używać? - Przykład 7
Przykład 7CSS
1
2
3
4
li:last-child {
    background: #b30;
    padding: 9px;
}

Sekcja 8Wybierz przedostatni element

Nie każdy o tym wie, ale można też wybrać przedostatni element z grupy wykorzystując :nth-last-child.

[CSS] Magia selektora :nth-child - jak tego używać? - Przykład 8
Przykład 8CSS
1
2
3
4
li:nth-last-child(2) {
    background: #b30;
    padding: 9px;
}

Sekcja 9Pseudoselektory - podsumowanie

Jak widać na powyższych przykładach, pseudoselektory są bardzo użytecznym narzędziem budowania stron WWW. Dzięki nim, możemy tworzyć odmienny wygląd dla listy czy grupy elementów, co jest często przydatne.
Nie można jednak zapomnieć o tym, że część przeglądarek (przeważnie tych starszych i Internet Explorery) może źle interpretować lub w ogóle może nie obsługiwać pseudoselektory. Dlatego też, takim rozwiązaniem pomocniczym będzie wykorzystanie narzędzia JS o nazwie Selectivzr. Dzięki niemu, będziesz mógł/mogła zapomnieć o problemie pseudoselektorów na w przeglądarkach (na szczęście, niewiele osób wyłącza JS w przeglądarkach).
Od siebie dodam, że dobrze jest łączyć Selectivzr z biblioteką Mootools, dzięki czemu uzyskamy wsparcie dla wszelkich możliwych selektorów.

Artykuł powstał w oparciu o ten wpis.

Udostępnij
Uwagi

O autorze

Staff Software Engineer

Piszę na tym blogu od 2009 roku, a strony i aplikacje webowe tworzę zawodowo od 14 lat. Obecnie w Bishop Fox prowadzę frontend platformy Cosmos, od samego początku projektu. Wcześniej pracowałem m.in. w OLX, KUDO, Auto1 i eZ Systems. Piszę tu o tym, czego nauczyłem się w praktyce: o JavaScripcie, TypeScripcie, Reakcie, CSS-ie i architekturze frontendu. Występowałem też jako prelegent na konferencjach w Polsce i Europie. Masz pytanie albo pomysł na wpis? Daj znać!