chevron-left chevron-right

Piotr Nalepa Frontend, architecture and AI

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

This version
blog.piotrnalepa.pl/2011/06/22/css-magia-selektora-nth-child-jak-tego-uzywac
Published
Author
, Staff Software Engineer
Category
CSS
Feedback
Write to me · Post on X

This post is 15 years old. Browsers and tools may have changed since then, so check the code against current documentation before you use it.

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 😉

Section 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
Example 1CSS
1
2
3
4
li:nth-child(3) {
    background: #b30;
    padding: 9px;
}

Section 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
Example 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.

Section 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
Example 3CSS
1
2
3
4
li:nth-child(-n+3) {
    background: #b30;
    padding: 9px;
}

Section 4Wybierz co trzeci element z grupy

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

Section 5Wybierz parzyste elementy

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

Section 6Wybierz nieparzyste elementy

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

Section 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
Example 7CSS
1
2
3
4
li:last-child {
    background: #b30;
    padding: 9px;
}

Section 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
Example 8CSS
1
2
3
4
li:nth-last-child(2) {
    background: #b30;
    padding: 9px;
}

Section 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.

Share
Feedback

About the author

Staff Software Engineer

I've been writing this blog since 2009 and building for the web professionally for 14 years. Today I lead the frontend of the Cosmos platform at Bishop Fox, where I've been since day one of the project. Before that I worked at OLX, KUDO, Auto1 and eZ Systems. Here I write about what I've learned in practice: JavaScript, TypeScript, React, CSS and frontend architecture. I've also spoken at conferences across Poland and Europe. Got a question or an idea for a post? Let me know!