Den :nth-of-type
vælgeren kan du vælge en eller flere elementer baseret på deres kilde ordre, ifølge en formel. Det er defineret i CSS Selectors Level 3 spec som en "strukturel pseudoklasse", hvilket betyder at den bruges til at style indhold baseret på dets forhold til forældre og søskendeelementer.
Antag, at vi har en ikke-ordnet liste og ønsker at "zebrastribe" alternerende listeelementer:
- First Item
- Second Item
- Third Item
- Fourth Item
- Fifth Item
I stedet for at tilføje klasser til hvert listeelement (f.eks. .even
& .odd
) Kan vi bruge :nth-of-type
:
li ( background: slategrey; ) /* select alternating items starting with the second item */ li:nth-of-type(2n) ( background: lightslategrey; )
Som du kan se, :nth-of-type
tager der et argument: dette kan være et enkelt heltal, nøgleordene "lige" eller "ulige" eller en formel som vist ovenfor. Hvis der er angivet et heltal, vælges kun et element, men nøgleordene eller en formel gentages gennem alle underordnede elementers børn og vælger matchende elementer, der ligner navigationselementer i en matrix i JavaScript. Nøgleordene "lige" og "ulige" er ligetil, men formlen er konstrueret ved hjælp af syntaksen an+b
, hvor:
- “A” er en heltalsværdi
- "N" er bogstavet "n"
- “+” Er en operatør og kan enten være “+” eller “-”
- “B” er et heltal og kræves, hvis en operator er inkluderet i formlen
Det er vigtigt at bemærke, at denne formel er en ligning, og den går igennem hvert søskendeelement og bestemmer, hvilken der skal vælges. “N” -delen af formlen, hvis den er inkluderet, repræsenterer et sæt stigende positive heltal (ligesom det gentages gennem en matrix). I vores ovenstående eksempel valgte vi hvert andet element med formlen 2n
, som fungerede, fordi hver gang et element blev kontrolleret, steg "n" med et (2 × 0, 2 × 1, 2 × 2, 2 × 3 osv.). Hvis et elements rækkefølge matcher resultatet af ligningen, bliver det valgt (2, 4, 6 osv.). For en mere detaljeret forklaring af den involverede matematik, bedes du læse denne artikel.
For at illustrere yderligere er her nogle eksempler på gyldige :nth-of-type
vælgere:
Tjek denne pen!
Heldigvis behøver du ikke altid lave matematikken selv - der er flere :nth-of-type
testere og generatorer derude:
- CSS-Tricks Tester
- Lea Verous tester
Interessepunkter
:nth-of-type
itererer gennem elementer, der starter fra toppen af kildeordren. Den eneste forskel mellem det og:nth-last-of-type
er, at sidstnævnte gentages gennem elementer, der starter fra bunden af kildearrangementet.- Den
:nth-of-type
vælgeren er meget lig:nth-child
, men med en kritisk forskel: det er mere specifik. I vores eksempel ovenfor ville de producere det samme resultat, fordi vi kun itererer overli
elementer, men hvis vi gentager sig over en mere kompleks gruppe af søskende,:nth-child
ville vi prøve at matche alle søskende, ikke kun søskende af samme elementtype. Dette afslører styrken ved:nth-of-type
- det er målrettet mod en bestemt type element i et arrangement i forhold til lignende søskende, ikke alle søskende.
Browsersupport
Chrome | Safari | Firefox | Opera | IE | Android | iOS |
---|---|---|---|---|---|---|
Arbejder | 3.2+ | Arbejder | 9.5+ | 9+ | Arbejder | Arbejder |
:nth-of-type
blev introduceret i CSS Selectors Module 3, hvilket betyder, at gamle versioner af browsere ikke understøtter det. Imidlertid er moderne browsersupport upåklagelig, og de nye pseudovælgere bruges i vid udstrækning i produktionsmiljøer. Hvis du har brug for ældre browsersupport, skal du enten udfylde til IE eller bruge disse vælgere på ikke-kritiske måder á la progressiv forbedring, hvilket anbefales.