CSS kullanarak belirli sayıda çocuğu nasıl edinebilirim?


270

Bir var tableolan tds dinamik olarak oluşturulur. İlk ve son çocuğu nasıl alacağımı biliyorum ama sorum şu:

İkinci veya üçüncü çocuğu CSS kullanarak almanın bir yolu var mı?

Yanıtlar:


398

Modern tarayıcılar td:nth-child(2)için ikinci tdve td:nth-child(3)üçüncü tarayıcılar için kullanın . Bunların td her satır için ikinci ve üçüncü olduğunu unutmayın .

Sürüm 9'dan daha eski IE ile uyumluluk istiyorsanız, Tim'in önerdiği gibi kardeş birleştiricileri veya JavaScript kullanın . Yönteminin açıklaması ve açıklaması için bu ilgili soruya verdiğim yanıta da bakın .


19
Bunun sadece CSS 3 seçicileriyle çalıştığını unutmayın (diğer bir deyişle, 9'dan önceki IE sürümlerinde değil).
zneak


2
Genel bir çözüm td:nth-of-type(3)olarak daha iyidir. önceki iki kardeşinin öğe türlerine bakılmaksızın , üst td:nth-child(3)öğesinin hem a td hem de üçüncü alt öğesi olan bir öğeyle eşleşir . üçte alacak , ne olursa olsun birçok olmayan nasıl unsurları ondan önce vardır . İstediğiniz öğeden önce öğe olmayan öğeler varsa, her iki seçici de aynı şeyle eşleşir. td:nth-of-type(3)tdtdtd
CJ Dennis

232

IE 7 ve 8 (ve IE6 içermeyen CSS3 desteği olmayan diğer tarayıcılar) için 2. ve 3. çocukları almak için aşağıdakileri kullanabilirsiniz:

2. Çocuk:

td:first-child + td

3. Çocuk:

td:first-child + td + td

Ardından + td, seçmek istediğiniz her ek çocuk için başka bir tane ekleyin .

IE6'yı desteklemek istiyorsanız bu da yapılabilir! Sadece küçük bir javascript kullanmalısınız (bu örnekte jQuery):

$(function() {
    $('td:first-child').addClass("firstChild");
    $(".table-class tr").each(function() {
        $(this).find('td:eq(1)').addClass("secondChild");
        $(this).find('td:eq(2)').addClass("thirdChild");
    });
});

Daha sonra css'nizde istediğiniz değişiklikleri yapmak için bu sınıf seçicileri kullanmanız yeterlidir:

table td.firstChild { /*stuff here*/ }
table td.secondChild { /*stuff to apply to second td in each row*/ }

19
IE7 / 8 ipucu için teşekkür ederiz. Harika çalışıyor.
Brendon Crawford

2
Cevabımda CSS3 seçicilerini veya sizinkinde CSS2 seçicilerini alıp doğrudan jQuery'ye bırakabilirsiniz ve IE6'da doğal olarak çalışırlar. Sınıfları eklemek için tüm bu ekstra halkalardan atlamaya gerek yok.
BoltClock
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.