Apakah mungkin untuk memilih, katakanlah, setiap elemen keempat dalam serangkaian elemen?
Ex: Saya punya 16 <div>
elemen ... Saya bisa menulis sesuatu seperti.
div:nth-child(4),
div:nth-child(8),
div:nth-child(12),
div:nth-child(16)
apakah ada cara yang lebih baik untuk melakukan ini?
css
css-selectors
Derek Adair
sumber
sumber
Jawaban:
Seperti namanya, memungkinkan Anda untuk membangun ekspresi aritmatika menggunakan variabel di samping angka konstan. Anda dapat melakukan penjumlahan ( ), pengurangan ( ) dan koefisien (di mana bilangan bulat, termasuk bilangan positif, bilangan negatif, dan nol).
:nth-child()
n
+
-
an
a
Inilah cara Anda akan menulis ulang daftar pemilih di atas:
Untuk penjelasan tentang bagaimana ekspresi aritmatika ini bekerja, lihat jawaban saya untuk pertanyaan ini , serta spesifikasi .
Perhatikan bahwa jawaban ini mengasumsikan bahwa semua elemen anak dalam elemen induk yang sama adalah dari jenis elemen yang sama
div
,. Jika Anda memiliki elemen lain dari jenis yang berbeda sepertih1
ataup
, Anda harus menggunakan:nth-of-type()
alih-alih:nth-child()
memastikan Anda hanya menghitungdiv
elemen:Untuk yang lainnya (kelas, atribut, atau kombinasi dari semua ini), di mana Anda mencari anak ke-n yang cocok dengan pemilih sewenang-wenang, Anda tidak akan dapat melakukan ini dengan pemilih CSS murni. Lihat jawaban saya untuk pertanyaan ini .
Omong-omong, tidak ada banyak perbedaan antara 4n dan 4n + 4 sehubungan dengan
:nth-child()
. Jika Anda menggunakann
variabel, itu mulai menghitung pada 0. Inilah yang akan cocok dengan setiap pemilih::nth-child(4n)
:nth-child(4n+4)
Seperti yang Anda lihat, kedua penyeleksi akan cocok dengan elemen yang sama seperti di atas. Dalam hal ini, tidak ada perbedaan.
sumber
tr td:nth-child(4)
. Perhatikan kurangnya n dalam kurungLihat: http://css-tricks.com/how-nth-child-works/
sumber
Coba ini
sumber
Anda membutuhkan argumen yang benar untuk
nth-child
kelas pseudo.Argumen harus dalam bentuk
an + b
untuk mencocokkan setiap satu th anak mulai dari b.Keduanya
a
danb
bilangan bulat opsional dan keduanya bisa nol atau negatif.a
adalah nol maka tidak ada "setiap satu th anak" klausa.a
negatif maka pencocokan dilakukan mundur mulai darib
.b
nol atau negatif maka dimungkinkan untuk menulis persamaan ekivalen dengan menggunakanb
misalnya positif4n+0
sama dengan4n+4
. Sama halnya4n-1
dengan4n+3
.Contoh:
Pilih setiap anak ke-4 (4, 8, 12, ...)
Pilih setiap anak ke-4 mulai dari 1 (1, 5, 9, ...)
Tampilkan cuplikan kode
Pilih setiap anak ke-3 dan ke-4 dari grup 4 (3 dan 4, 7 dan 8, 11 dan 12, ...)
Tampilkan cuplikan kode
Pilih 4 item pertama (4, 3, 2, 1)
Tampilkan cuplikan kode
sumber