:nth-of-type
Volič umožňuje vybrat jeden nebo více prvků na základě jejich zdrojové pořadí, podle vzorce. Ve specifikaci CSS Selectors Level 3 je definována jako „strukturní pseudotřída“, což znamená, že se používá ke stylování obsahu na základě jeho vztahu k nadřazeným a sourozeneckým prvkům.
Předpokládejme, že máme neuspořádaný seznam a přejeme si „zebra-stripe“ položky střídavého seznamu:
- First Item
- Second Item
- Third Item
- Fourth Item
- Fifth Item
Místo přidávání tříd do jednotlivých položek seznamu (např. .even
& .odd
) Můžeme použít :nth-of-type
:
li ( background: slategrey; ) /* select alternating items starting with the second item */ li:nth-of-type(2n) ( background: lightslategrey; )
Jak vidíte, :nth-of-type
vezme argument: může to být jedno celé číslo, klíčová slova „sudá“ nebo „lichá“ nebo vzorec, jak je uvedeno výše. Pokud je zadáno celé číslo, je vybrán pouze jeden prvek - ale klíčová slova nebo vzorec budou iterovat všemi podřízenými prvky nadřazeného prvku a vyberou odpovídající prvky podobné navigaci položek v poli v JavaScriptu. Klíčová slova „even“ a „odd“ jsou přímočará, ale vzorec je sestaven pomocí syntaxe an+b
, kde:
- „A“ je celočíselná hodnota
- „N“ je doslovné písmeno „n“
- „+“ Je operátor a může to být „+“ nebo „-“
- „B“ je celé číslo a je vyžadováno, pokud je do vzorce zahrnut operátor
Je důležité si uvědomit, že tento vzorec je rovnice a iteruje každým prvkem sourozence a určuje, který bude vybrán. Část vzorce „n“, pokud je zahrnuta, představuje sadu zvyšujících se kladných celých čísel (stejně jako iterace v poli). V našem výše uvedeném příkladu jsme vybrali každý druhý prvek pomocí vzorce 2n
, který fungoval, protože při každé kontrole prvku se „n“ zvýšilo o jeden (2 × 0, 2 × 1, 2 × 2, 2 × 3 atd.). Pokud se pořadí prvku shoduje s výsledkem rovnice, bude vybrán (2, 4, 6 atd.). Podrobnější vysvětlení zapojené matematiky naleznete v tomto článku.
Pro další ilustraci uvádíme několik příkladů platných :nth-of-type
selektorů:
Podívejte se na toto pero!
Naštěstí nemusíte vždy dělat matematiku sami - existuje několik :nth-of-type
testerů a generátorů:
- Tester triků CSS
- Tester Lea Verou
Body zájmu
:nth-of-type
iteruje prvky počínaje od horní části zdrojové objednávky. Jediný rozdíl mezi ním a tím:nth-last-of-type
je, že tento iteruje prvky, které začínají od spodní části zdrojové objednávky.:nth-of-type
Volič je velmi podobná:nth-child
, ale s jedním kritickým rozdílem, že je specifická. V našem příkladu výše by produkovali stejný výsledek, protože iterujeme pouze nadli
prvky, ale pokud bychom iterovali nad složitější skupinou sourozenců,:nth-child
pokusili bychom se shodovat se všemi sourozenci, nejen se sourozenci stejného typu prvku. To odhaluje sílu:nth-of-type
- zaměřuje se na určitý typ prvku v uspořádání ve vztahu k podobným sourozencům, ne všem sourozencům.
Podpora prohlížeče
Chrome | Safari | Firefox | Opera | TJ | Android | iOS |
---|---|---|---|---|---|---|
Funguje | 3,2+ | Funguje | 9,5+ | 9+ | Funguje | Funguje |
:nth-of-type
byl představen v modulu CSS Selectors Module 3, což znamená, že staré verze prohlížečů jej nepodporují. Podpora moderních prohlížečů je však dokonalá a nové pseudo-selektory jsou široce používány v produkčním prostředí. Pokud požadujete podporu starších prohlížečů, buď polyfill pro IE, nebo použijte tyto selektory nekritickými způsoby á la progresivní vylepšení, které se doporučuje.