ฉันจะทำให้เด็กจำนวนเฉพาะใช้ CSS ได้อย่างไร


270

ฉันมีสิ่งtableที่tdถูกสร้างขึ้นแบบไดนามิก ฉันรู้วิธีรับลูกคนแรกและลูกคนสุดท้าย แต่คำถามของฉันคือ:

มีวิธีรับลูกที่สองหรือสามโดยใช้ CSS หรือไม่?

คำตอบ:


398

สำหรับเบราว์เซอร์ที่ทันสมัยให้ใช้td:nth-child(2)สำหรับที่สองtdและtd:nth-child(3)ที่สาม โปรดจำไว้ว่าสิ่งเหล่านี้เรียกที่สองและสามสำหรับทุกแถวtd

หากคุณต้องการความเข้ากันได้กับ IE ที่เก่ากว่ารุ่น 9 ให้ใช้ sibling combinators หรือ JavaScript ตามที่ Timแนะนำ ดูคำตอบของฉันสำหรับคำถามที่เกี่ยวข้องสำหรับคำอธิบายและภาพประกอบของวิธีการของเขา


19
อย่าลืมว่าใช้งานได้กับตัวเลือก CSS 3 เท่านั้น (กล่าวอีกนัยหนึ่งไม่ใช่รุ่น IE ก่อนหน้า 9)
zneak

1
เร็ว ๆ นี้ความกังวลที่ผ่านมา ... ความรู้สึกของฉันเกี่ยวกับเรื่องนี้
Clarus Dignus

2
เป็นวิธีแก้ปัญหาทั่วไปtd:nth-of-type(3)ดีกว่า td:nth-child(3)จะตรงกับองค์ประกอบที่เป็นทั้งtd และเด็กที่สามของแม่ของตนโดยไม่คำนึงถึงประเภทองค์ประกอบของสองพี่น้องก่อนหน้านี้ td:nth-of-type(3)จะได้รับที่สามtd, โดยไม่คำนึงถึงไม่ใช่วิธีการหลายtdองค์ประกอบก่อนที่มันจะ หากไม่มีtdองค์ประกอบที่ไม่ใช่ก่อนที่คุณต้องการตัวเลือกทั้งสองจะตรงกับสิ่งเดียวกัน
CJ Dennis

232

สำหรับ IE 7 & 8 (และเบราว์เซอร์อื่น ๆ ที่ไม่มีการสนับสนุน CSS3 ไม่รวม IE6) คุณสามารถใช้สิ่งต่อไปนี้เพื่อรับลูกที่ 2 และ 3:

ลูกคนที่สอง:

td:first-child + td

ลูกคนที่สาม:

td:first-child + td + td

จากนั้นเพิ่มอีกหนึ่งรายการ+ tdสำหรับเด็กเพิ่มเติมแต่ละคนที่คุณต้องการเลือก

หากคุณต้องการรองรับ IE6 ก็สามารถทำได้เช่นกัน! คุณเพียงแค่ต้องใช้จาวาสคริปต์ (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");
    });
});

จากนั้นใน css ของคุณคุณเพียงแค่ใช้ตัวเลือกคลาสเหล่านั้นเพื่อทำการเปลี่ยนแปลงตามที่คุณต้องการ:

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

19
ขอบคุณสำหรับเคล็ดลับ IE7 / 8 ใช้งานได้ดี
Brendon Crawford

2
คุณสามารถใช้ตัวเลือก CSS3 ในคำตอบของฉันหรือตัวเลือก CSS2 ในของคุณและวางลงใน jQuery และพวกเขาจะทำงานตามธรรมชาติใน IE6 ไม่จำเป็นต้องกระโดดข้ามห่วงพิเศษเหล่านี้ทั้งหมดเพื่อเพิ่มชั้นเรียน
BoltClock
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.