The :nth-of-type
pemilih membolehkan anda memilih satu atau lebih unsur-unsur berdasarkan perintah sumber mereka, menurut formula. Ini didefinisikan dalam spesifikasi CSS Selectors Level 3 sebagai "kelas pseudo struktural", yang bermaksud ia digunakan untuk menggayakan konten berdasarkan hubungannya dengan elemen ibu bapa dan saudara.
Katakan kita mempunyai senarai yang tidak tersusun dan ingin "zebra-stripe" item senarai bergantian:
- First Item
- Second Item
- Third Item
- Fourth Item
- Fifth Item
Daripada menambahkan kelas ke setiap item senarai (mis. .even
& .odd
) Kita boleh menggunakan :nth-of-type
:
li ( background: slategrey; ) /* select alternating items starting with the second item */ li:nth-of-type(2n) ( background: lightslategrey; )
Seperti yang anda lihat, :nth-of-type
ambil argumen: ini boleh menjadi bilangan bulat tunggal, kata kunci "genap" atau "ganjil", atau formula seperti yang ditunjukkan di atas. Sekiranya bilangan bulat ditentukan hanya satu elemen yang dipilih-tetapi kata kunci atau formula akan berulang melalui semua anak dari elemen induk dan memilih elemen yang sepadan-serupa dengan menavigasi item dalam array dalam JavaScript. Kata kunci "genap" dan "ganjil" adalah mudah, tetapi rumus dibina menggunakan sintaks an+b
, di mana:
- "A" adalah nilai integer
- "N" adalah huruf harfiah "n"
- "+" Adalah pengendali dan mungkin "+" atau "-"
- "B" adalah bilangan bulat dan diperlukan jika operator disertakan dalam formula
Penting untuk diperhatikan bahawa formula ini adalah persamaan, dan berulang melalui setiap elemen saudara, menentukan mana yang akan dipilih. Bahagian "n" dari formula, jika disertakan, mewakili sekumpulan bilangan bulat positif yang meningkat (seperti melakukan lelaran melalui array). Dalam contoh di atas, kami memilih setiap elemen kedua dengan formula 2n
, yang berfungsi kerana setiap kali elemen diperiksa, "n" meningkat satu (2 × 0, 2 × 1, 2 × 2, 2 × 3, dll). Sekiranya susunan elemen sepadan dengan hasil persamaan, ia akan dipilih (2, 4, 6, dll). Untuk penjelasan yang lebih mendalam mengenai matematik yang terlibat, sila baca artikel ini.
Untuk menggambarkan lebih lanjut, berikut adalah beberapa contoh :nth-of-type
pemilih yang sah :
Lihat Pen ini!
Nasib baik, anda tidak perlu melakukan matematik sendiri-ada beberapa :nth-of-type
penguji dan penjana di luar sana:
- Penguji Trik CSS
- Penguji Lea Verou
Tempat Menarik
:nth-of-type
berulang melalui elemen bermula dari bahagian atas susunan sumber. Satu-satunya perbezaan antara ia:nth-last-of-type
adalah bahawa yang terakhir berulang melalui elemen bermula dari bawah susunan sumber.- The
:nth-of-type
pemilih adalah hampir sama dengan:nth-child
tetapi dengan satu perbezaan kritikal: ia adalah lebih khusus. Dalam contoh kita di atas, mereka akan menghasilkan hasil yang sama kerana kita melakukan iterasi hanya padali
elemen, tetapi jika kita melakukan lelaran pada kumpulan adik beradik yang lebih kompleks,:nth-child
akan cuba memadankan semua adik-beradik, bukan hanya adik-beradik dengan jenis elemen yang sama. Ini menunjukkan kekuatan:nth-of-type
-itu mensasarkan jenis elemen tertentu dalam susunan yang berkaitan dengan adik beradik yang serupa, bukan semua adik-beradik.
Sokongan Penyemak Imbas
Chrome | Safari | Firefox | Opera | IE | Android | iOS |
---|---|---|---|---|---|---|
Berfungsi | 3.2+ | Berfungsi | 9.5+ | 9+ | Berfungsi | Berfungsi |
:nth-of-type
diperkenalkan dalam CSS Selectors Module 3, yang bermaksud versi lama penyemak imbas tidak menyokongnya. Walau bagaimanapun, sokongan penyemak imbas moden sempurna, dan pemilih semu baru digunakan secara meluas dalam persekitaran pengeluaran. Sekiranya anda memerlukan sokongan penyemak imbas yang lebih lama, baik polyfill untuk IE, atau gunakan pemilih ini dengan cara yang tidak kritikal á la peningkatan progresif, yang disyorkan.