Bir ana öğenin bir veya daha fazla alt öğesi olabilir:
<div class="parent">
<div>Child</div>
<div>Child</div>
<div>Child</div>
<div>Child</div>
</div>
Bu çocuklardan sadece biri ilk olabilir. Bu şununla eşleşir :first-child
:
<div class="parent">
<div>Child</div> <!-- :first-child -->
<div>Child</div>
<div>Child</div>
<div>Child</div>
</div>
Arasındaki fark :first-child
ve :first-of-type
yani :first-of-type
, HTML onun etiketi adına temsil edilir onun öğe türü, ilk elemanını maç olacak o eleman ebeveynin ilk çocuğu olmasa bile . Şimdiye kadar baktığımız alt unsurların hepsi div
s idi, ama bana katlanın, buna birazdan geleceğim.
Şimdilik, sohbet de doğrudur: herhangi :first-child
biri de :first-of-type
zorunludur. Buradaki ilk çocuk aynı zamanda ilk olduğundan div
, hem sözde sınıflarla hem de tür seçiciyle eşleşecektir div
:
<div class="parent">
<div>Child</div> <!-- div:first-child, div:first-of-type -->
<div>Child</div>
<div>Child</div>
<div>Child</div>
</div>
Şimdi, ilk çocuğun tipini div
başka bir şeye değiştirirseniz, mesela h1
, yine ilk çocuk olacak, ama artık ilk çocuk olmayacak div
; bunun yerine, ilk (ve tek) olur h1
. div
Aynı ebeveyn içinde bu ilk çocuğu izleyen başka öğeler varsa , bu div
öğelerden ilki eşleşecektir div:first-of-type
. Verilen örnekte, ikinci çocuk div
, ilk çocuk şu şekilde değiştirildikten sonra birinci olur h1
:
<div class="parent">
<h1>Child</h1> <!-- h1:first-child, h1:first-of-type -->
<div>Child</div> <!-- div:nth-child(2), div:first-of-type -->
<div>Child</div>
<div>Child</div>
</div>
Bunun :first-child
eşdeğer olduğunu unutmayın :nth-child(1)
.
Bu aynı zamanda, herhangi bir elemanın bir seferde sadece tek bir alt elemana sahip olabileceği anlamına gelirken :first-child
, :first-of-type
sözde-sınıfla eşleşen çocuk tiplerinin sayısı kadar çocuk sahibi olabilir ve olacaktır . Örneğimizde, seçici .parent > :first-of-type
( sözde özelliği örtük olarak *
nitelendiren :first-of-type
) , yalnızca bir değil, iki öğe eşleşecektir :
<div class="parent">
<h1>Child</h1> <!-- .parent > :first-of-type -->
<div>Child</div> <!-- .parent > :first-of-type -->
<div>Child</div>
<div>Child</div>
</div>
Aynısı :last-child
ve için de geçerlidir :last-of-type
: herhangi :last-child
biri zorunlu olarak da vardır :last-of-type
, çünkü kesinlikle başka hiçbir unsur onun ebeveyni içinde onu takip etmez. Yine div
de, son çocuk aynı zamanda son çocuk h1
olduğu için türünün sonuncusu olmasına rağmen son çocuk olamaz.
:nth-child()
ve :nth-of-type()
rasgele bir tamsayı argümanıyla kullanıldığında ( :nth-child(1)
yukarıda bahsedilen örnekte olduğu gibi) ilke olarak çok benzer şekilde işlev görür , ancak farklı oldukları yerde, eşleşen elemanların potansiyel sayısıdır :nth-of-type()
. Bu, p: nth-child (2) ve p: nth-of-type (2) arasındaki fark nedir?