Saya tidak bisa membedakan antara element:first-child
danelement:first-of-type
Misalnya, Anda memiliki div
div:first-child
→ Semua <div>
elemen yang merupakan anak pertama dari induknya.
div:first-of-type
→ Semua <div>
elemen yang merupakan <div>
elemen pertama dari induknya.
Ini sepertinya hal yang persis sama, tetapi cara kerjanya berbeda.
Bisakah seseorang menjelaskan?
css
css-selectors
BoltClock
sumber
sumber
Jawaban:
Elemen induk dapat memiliki satu atau lebih elemen anak:
Di antara anak-anak ini, hanya satu yang bisa menjadi yang pertama. Ini cocok dengan
:first-child
:Perbedaan antara
:first-child
and:first-of-type
is yang:first-of-type
akan cocok dengan elemen pertama dari jenis elemennya, yang dalam HTML diwakili oleh nama tag-nya, meskipun elemen tersebut bukan anak pertama dari induknya . Sejauh ini elemen anak yang kita lihat semuanya telahdiv
s, tapi bersabarlah, saya akan membahasnya sebentar lagi.Untuk saat ini, kebalikannya juga berlaku: apapun
:first-child
juga:first-of-type
karena kebutuhan. Karena anak pertama di sini juga yang pertamadiv
, ini akan cocok dengan kedua pseudo-class, serta selektor tipediv
:Sekarang, jika Anda mengubah jenis anak pertama dari yang
div
lain, sepertih1
, itu akan tetap menjadi anak pertama, tetapi jelas bukan lagi yang pertamadiv
; sebaliknya, ini menjadi yang pertama (dan satu-satunya)h1
. Jika adadiv
elemen lain yang mengikuti anak pertama ini dalam induk yang sama, elemen pertamadiv
akan cocokdiv:first-of-type
. Dalam contoh yang diberikan, anak kedua menjadi anak pertamadiv
setelah anak pertama diubah menjadih1
:Perhatikan bahwa
:first-child
itu setara dengan:nth-child(1)
.Ini juga menyiratkan bahwa meskipun setiap elemen mungkin hanya memiliki satu elemen turunan yang cocok
:first-child
pada satu waktu, elemen tersebut dapat dan akan memiliki banyak turunan yang cocok dengan:first-of-type
pseudo-class sebanyak jumlah tipe turunan yang dimilikinya. Dalam contoh kita, selektor.parent > :first-of-type
(dengan*
kualifikasi implisit yang memenuhi syarat:first-of-type
pseudo) akan mencocokkan dua elemen, bukan hanya satu:Hal yang sama berlaku untuk
:last-child
dan:last-of-type
: ada:last-child
juga:last-of-type
karena kebutuhan , karena sama sekali tidak ada elemen lain yang mengikutinya di dalam induknya. Namun, karena yang terakhirdiv
juga merupakan anak terakhir, makah1
tidak bisa menjadi anak terakhir, meskipun merupakan yang terakhir dari jenisnya.:nth-child()
dan:nth-of-type()
berfungsi sangat mirip pada prinsipnya saat digunakan dengan argumen bilangan bulat arbitrer (seperti dalam:nth-child(1)
contoh yang disebutkan di atas), tetapi perbedaannya terletak pada jumlah potensi elemen yang cocok:nth-of-type()
. Hal ini dibahas secara rinci dalam Apa perbedaan antara p: n-anak (2) dan p: n-jenis (2)?sumber
Saya telah membuat contoh untuk menunjukkan perbedaan antara
first-child
dan difirst-of-type
sini.HTML
CSS
Untuk melihat contoh lengkapnya, silakan kunjungi https://jsfiddle.net/bwLvyf3k/1/
sumber
Perbedaan antara first-child-type dan first-child dapat dipahami dengan contohnya. Anda perlu memahami contoh follwing yang saya buat dan ini benar-benar berfungsi, Anda dapat menempelkan kode di editor Anda, Anda akan memahami apa itu dan bagaimana caranya mereka bekerja
Kode # 1 untuk tipe pertama:
hasil
.p1, .p2, .p3 akan ditata dan warnanya akan merah. bahkan jika kita meletakkan .p1 setelah div kedua akan menjadi merah.
Kode # 2 untuk anak pertama:
hasil:
jika kita meletakkan .p2 setelah div kedua 2 itu tidak akan menjadi merah namun dalam kasus pertama itu berhasil.
sumber