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.