จะเลือก TD ตัวแรกและตัวสุดท้ายในแถวได้อย่างไร?


170

คุณจะเลือกคนแรกและคนสุดท้ายTDในแถวได้อย่างไร?

tr > td[0],
tr > td[-1] {
/* styles */
}

คำตอบ:


377

คุณสามารถใช้:first-childและ:last-childตัวเลือกหลอก:

tr td:first-child,
tr td:last-child {
    /* styles */
}

สิ่งนี้จะทำงานในเบราว์เซอร์หลัก ๆ ทั้งหมด แต่ IE7 มีปัญหาบางอย่างเมื่อมีการเพิ่มองค์ประกอบแบบไดนามิก (และจะไม่ทำงานใน IE6)


และถ้าคุณต้องการเลือกลูกคนที่สองและสาม?
คลาร์ก

2
และอะไรคือความแตกต่างระหว่างtr > tdและtr td?
คลาร์ก

กฎต่อไปนี้กำหนดสไตล์ขององค์ประกอบ P ทั้งหมดที่เป็นลูกของ BODY: body> P {line-height: 1.3} คุณสามารถดูได้ที่: w3.org/TR/CSS2/selector.html#child-selectors (หน้าเดียวกันที่โพสต์ไว้ โดย James)
Francesco

4
@clarkk - การ>เลือกเด็กตรงเท่านั้น หากไม่มีมันลูกหลานทั้งหมด (เช่นลูกของเด็ก) จะถูกเลือก ในการเลือกลูกคนที่ 2 หรือคนที่ 3 ให้ดูที่nth-childตัวเลือกหลอก
James Allardice

@BoltClock ฉันเคยเห็นวิธีแก้ปัญหาของคุณเมื่อใช้+นี้ สิ่งที่ชอบ tr td + td + .... +td แต่ถ้าฉันไม่ทราบว่าหลาย td ฉันมี?
Royi Namir

19

คุณสามารถใช้ตัวอย่างต่อไปนี้:

  tr td:first-child {text-decoration: underline;}
  tr td:last-child {color: red;}

ใช้คลาส pseudo ต่อไปนี้:

: ลูกคนแรก หมายถึง "เลือกองค์ประกอบนี้ถ้าลูกคนแรกของผู้ปกครอง"

: last-childหมายถึง "เลือกองค์ประกอบนี้ถ้าเป็นลูกสุดท้ายของ parent"

โหนดองค์ประกอบ (แท็ก HTML) เท่านั้นที่ได้รับผลกระทบ pseudo-classes เหล่านี้จะไม่สนใจโหนดข้อความ


15

คุณสามารถใช้: ลูกคนแรกและ: ลูกคนโต pseudo-selectors :

tr td:first-child{
    color:red;
}
tr td:last-child {
    color:green
}

หรือคุณสามารถใช้วิธีอื่นเช่น

// To first child 
tr td:nth-child(1){
    color:red;
}

// To last child 
tr td:nth-last-child(1){
    color:green;
}

ทั้งสองวิธีทำงานได้อย่างสมบูรณ์แบบ


2

หากคุณใช้ sass (scss) คุณสามารถใช้ตัวอย่างต่อไปนี้:

tr > td{
   /* styles for all td*/
   &:first-child{
     /* styles for first */ 
   }
   &:last-child{
    /* styles for last*/
   }
 }

2

หากแถวนั้นมีthแท็กนำหน้า (หรือต่อท้าย) บางส่วนก่อนหน้าtdคุณควรใช้:first-of-typeและ:last-of-typeตัวเลือก มิฉะนั้นtdจะไม่ถูกเลือกก่อนหากไม่ใช่องค์ประกอบแรกของแถว

สิ่งนี้ให้:

td:first-of-type, td:last-of-type {
    /* styles */
}

1
คุณประหยัดเวลาของฉันฉันใช้ลูกคนสุดท้ายซึ่งไม่ได้ทำงาน แต่วิธีการแก้ปัญหาของคุณทำงานได้อย่างสมบูรณ์
Mirza Obaid
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.