เลือกองค์ประกอบสุดท้ายที่สองด้วย css


140

ฉันรู้แล้วว่า: ลูกคนสุดท้าย แต่มีวิธีเลือก div ไหม:

<div id="container">
 <div>a</div>
 <div>b</div>
 <div>SELECT THIS</div> <!-- THIS -->
 <div>c</div>
</div>

หมายเหตุ: ไม่มี jQuery เฉพาะกับ CSS


แน่นอนว่ามีเหตุผลบางอย่างที่ว่าทำไมลูกคนที่สองถึงมีความสำคัญ?
David Tang

ใช่ฉันต้องเลือกทั้งสุดท้ายและวินาทีสุดท้ายสำหรับการใช้สไตล์บางอย่าง
ไดนามิก

ทำไมคุณไม่สามารถจัดชั้นเรียนใน div สุดท้ายที่ 2 ได้
Daveo

3
"ทำไมคุณไม่สามารถใส่คลาสใน div สุดท้ายที่ 2 ได้": บางทีถ้าคุณเข้าถึงเนื้อหาสไตล์ที่กำลังสร้างขึ้นซึ่งคุณไม่มีสิทธิ์ (ง่าย) ในการเพิ่มคลาสในรายการสุดท้ายที่สอง
Henrik

คำตอบ:


279

ใน CSS3 คุณมี:

:nth-last-child(2)

ดู: https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-last-child

nth-last-childการสนับสนุนเบราว์เซอร์:

  • Chrome 2
  • Firefox 3.5
  • Opera 9.5, 10
  • Safari 3.1, 4
  • Internet Explorer 9

1
นี่อาจเป็นวิธีที่จะไปได้เว้นแต่คุณจะแนบคลาสเข้ากับ div ที่คุณพยายามเลือก ดังที่ Frosty ได้กล่าวไว้ CSS3 ไม่รองรับเบราว์เซอร์หรือ IE รุ่นเก่า Jquery เป็นตัวเลือกที่ดีกว่ามากหากคุณกังวลเกี่ยวกับความสามารถในการคำนวณข้ามเบราว์เซอร์
Thomas

เป็นการคัดลอก / วางจากบทความที่เชื่อมโยง ... แก้ไขคำตอบขอบคุณ
Frosty Z

1
วิธีแก้ปัญหาใน css: #container>: nth-last-child (2) {background: red;} โปรดตรวจสอบ codepen นี้เพื่อดูแบบสด: codepen.io/marc_dahan/pen/JyxObz
marcdahan

ตอนนี้เราไม่จำเป็นต้องรองรับ IE รุ่นเก่าคำตอบนี้จะทำงานได้อย่างสมบูรณ์แบบ จริงๆแล้วถ้าผู้คนยังคงใช้ IE 8 และต่ำกว่าพวกเขาไม่สมควรที่จะมีสิ่งที่สวยงาม
Stender

60

หมายเหตุ:โพสต์คำตอบนี้เนื่องจาก OP ระบุในความคิดเห็นในภายหลังว่าต้องเลือกสององค์ประกอบสุดท้ายไม่ใช่แค่องค์ประกอบที่สองถึงสุดท้าย


:nth-childเลือก CSS3 ในความเป็นจริงความสามารถมากขึ้นกว่าที่คุณเคยคิด!

ตัวอย่างเช่นสิ่งนี้จะเลือก 2 องค์ประกอบสุดท้ายของ#container:

#container :nth-last-child(-n+2) {}

แต่นี่เป็นเพียงจุดเริ่มต้นของมิตรภาพที่สวยงาม


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