:nth-of-type
Selektor omogućuje odabir jednog ili više elemenata koji se temelje na njihovom izvoru kako bi, u skladu s formulom. U specifikaciji CSS Selectors Level 3 definiran je kao „strukturna pseudo-klasa“, što znači da se koristi za oblikovanje sadržaja na temelju odnosa s roditeljskim i bratskim elementima.
Pretpostavimo da imamo neuređeni popis i da želimo "zebra-prugu" izmjenjivati stavke popisa:
- First Item
- Second Item
- Third Item
- Fourth Item
- Fifth Item
Umjesto dodavanja klasa u svaku stavku popisa (npr. .even
& .odd
) Možemo koristiti :nth-of-type
:
li ( background: slategrey; ) /* select alternating items starting with the second item */ li:nth-of-type(2n) ( background: lightslategrey; )
Kao što vidite, :nth-of-type
uzima argument: to može biti jedan cijeli broj, ključne riječi "paran" ili "neparan" ili formula kao što je gore prikazano. Ako je naveden cijeli broj, odabran je samo jedan element, ali ključne riječi ili formula će se itirirati kroz sve podređene dijelove nadređenog elementa i odabrati odgovarajuće elemente, slično navigacijskim stavkama u polju u JavaScript-u. Ključne riječi "parno" i "neparno" izravne su, ali formula je konstruirana koristeći sintaksu an+b
, gdje:
- "A" je cijela vrijednost
- "N" je doslovno slovo "n"
- "+" Je operator i može biti ili "+" ili "-"
- "B" je cijeli broj i potreban je ako je operator uključen u formulu
Važno je napomenuti da je ova formula jednadžba i ponavlja se kroz svaki element braće i sestara, određujući koji će biti odabran. "N" dio formule, ako je uključen, predstavlja skup rastućih pozitivnih cijelih brojeva (baš poput ponavljanja kroz niz). U našem gornjem primjeru odabrali smo svaki drugi element s formulom 2n
, koji je radio, jer se svaki put kada se element provjerava, "n" povećavao za jedan (2 × 0, 2 × 1, 2 × 2, 2 × 3 itd.). Ako se redoslijed elementa podudara s rezultatom jednadžbe, on se odabire (2, 4, 6 itd.). Za detaljnija objašnjenja matematike pročitajte ovaj članak.
Za daljnju ilustraciju evo nekoliko primjera valjanih :nth-of-type
selektora:
Pogledajte ovu olovku!
Srećom, ne morate uvijek sami računati - postoji nekoliko :nth-of-type
testera i generatora:
- CSS-Tester Tester
- Tester Lea Veroua
Točke interesa
:nth-of-type
ponavlja kroz elemente počevši od vrha izvornog poretka. Jedina razlika između njega i toga:nth-last-of-type
je što se ovaj ponavlja kroz elemente počevši od dna izvornog poretka.:nth-of-type
Selektor je vrlo slična:nth-child
, ali s jednom kritičnom razlika: to je više specifičan. U našem primjeru gore dali bi isti rezultat, jer mi ponavljamo samoli
elemente, ali ako bismo ponavljali složeniju skupinu braće i sestara,:nth-child
pokušali bi podudarati svu braću i sestre, a ne samo braću i sestre iste vrste elemenata. Ovo otkriva snagu:nth-of-type
-it cilja određenu vrstu elementa u aranžmanu u odnosu na sličnu braću i sestre, a ne na svu braću i sestre.
Podrška preglednika
Krom | Safari | Firefox | Opera | IE | Android | iOS |
---|---|---|---|---|---|---|
Djela | 3,2+ | Djela | 9,5+ | 9+ | Djela | Djela |
:nth-of-type
uveden je u CSS Selectors Module 3, što znači da ga stare verzije preglednika ne podržavaju. Međutim, moderna podrška za preglednike je besprijekorna, a novi pseudo-selektori široko se koriste u proizvodnim okruženjima. Ako vam je potrebna starija podrška za preglednik, ili polifil za IE, ili ove selektore koristite na nekritične načine, progresivno poboljšanje, što se preporučuje.