เป็นไปได้ไหมที่จะเลือก n รายการสุดท้ายด้วยลูกที่ n


130

ใช้รายการมาตรฐานฉันกำลังพยายามเลือก 2 รายการสุดท้าย ฉันมีการเรียงสับเปลี่ยนต่างๆAn+Bแต่ดูเหมือนจะไม่มีอะไรให้เลือก 2 รายการสุดท้าย:

li:nth-child(n+2) {} /* selects from the second onwards */
li:nth-child(n-2) {} /* selects everything */
li:nth-child(-n+2) {} /* selects first two only */
li:nth-child(-n-2) {} /* selects nothing */

ฉันทราบถึงตัวเลือก CSS3 ใหม่ที่ต้องการ:nth-last-child()แต่ฉันต้องการสิ่งที่ทำงานในเบราว์เซอร์อื่น ๆ อีกสองสามตัวถ้าเป็นไปได้ (อย่าสนใจ IE เป็นพิเศษ)


5
IE แม้จะมีการสนับสนุนสำหรับเบราว์เซอร์:nth-last-child()เป็นเรื่องเดียวกันกับที่:nth-child() ตาม quirksmode.org นอกจากนี้:nth-child()และ:nth-last-child()ได้รับการแนะนำใน CSS3 ทั้งคู่ไม่เก่ากว่าหรือใหม่กว่าในแง่นั้น
BoltClock

nth-childสรุปเคล็ดลับที่มีประโยชน์มากมายโดยcss-tricks
m7913d

คำตอบ:


274

สิ่งนี้จะเลือกสอง iems สุดท้ายของรายการ:

li:nth-last-child(-n+2) {color:red;}
<ul>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
  <li>fred</li>
</ul>


ใช่ แต่คุณกำลังใช้:nth-last-child()ที่ได้กล่าวไปแล้ว
BoltClock

6
(-n + 2) => นี่คือสิ่งที่ฉันกำลังมองหา ขอบคุณ
Surjith SM

16
นี่ควรเป็นคำตอบที่ยอมรับได้ใช่ลูกที่ n สุดท้ายถูกพูดถึงแล้ว แต่ไม่ใช่ว่า (-n + b) เป็นเคล็ดลับเด็ดอย่างไร
BlackTigerX

! น่ากลัว ขอบคุณ!
Yulian

56

nth-last-childดูเหมือนได้รับการออกแบบมาโดยเฉพาะเพื่อแก้ปัญหานี้ดังนั้นฉันจึงสงสัยว่ามีทางเลือกอื่นที่เข้ากันได้มากกว่านี้หรือไม่ รูปลักษณ์การสนับสนุนแม้ว่าค่อนข้างดี


ขอบคุณสำหรับลิงค์ - ดูเหมือนว่าการสนับสนุนลูกที่ n จะเหมือนกับลูกที่ n สุดท้าย (ฉันแน่ใจว่า IE8 รองรับลูกที่ n แต่อาจจะไม่)
แพะไม่พอใจ


1

เนื่องจากคำจำกัดความของความหมายของnth-childฉันไม่เห็นว่าสิ่งนี้เป็นไปได้อย่างไรหากไม่รวมความยาวของรายการองค์ประกอบที่เกี่ยวข้อง จุดสำคัญของความหมายคือการอนุญาตให้แยกกลุ่มขององค์ประกอบลูกออกเป็นกลุ่มที่ทำซ้ำได้ ( แก้ไข - ขอบคุณ BoltClock) หรือเป็นส่วนแรกของความยาวคงที่ตามด้วย "ส่วนที่เหลือ" คุณต้องการสิ่งที่ตรงกันข้ามกับสิ่งนั้นซึ่งเป็นสิ่งที่nth-last-childให้คุณ


1
ด้วย:nth-child()คุณสามารถเลือกแรกองค์ประกอบโดยการระบุm :nth-child(-n+m)
BoltClock

@BoltClock ฉันจะต้องคิดอีกสักครู่ ... โอ้ใช่แล้วคุณพูดถูก เห็นได้ชัดว่าฉันไม่ได้อยู่ในสถานะที่จะประกาศอย่างจริงจังเกี่ยวกับความตั้งใจของคณะกรรมการเมื่อประดิษฐ์ตัวเลือก CSS3 อยู่ดี :-)
Pointy

-2

หากคุณใช้ jQuery ในโปรเจ็กต์ของคุณหรือยินดีที่จะรวมไว้คุณสามารถเรียกใช้nth-last-childผ่าน API ตัวเลือก (นี่คือการจำลองที่จะข้ามเบราว์เซอร์) นี่คือลิงค์ไปยังnth-last-childปลั๊กอิน หากคุณใช้วิธีนี้ในการกำหนดเป้าหมายองค์ประกอบที่คุณสนใจ:

$('ul li:nth-last-child(1)').addClass('last');

จากนั้นจัดสไตล์คลาสอีกครั้งlastแทนตัวเลือกnth-childหรือnth-last-childหลอกคุณจะได้รับประสบการณ์ข้ามเบราว์เซอร์ที่สอดคล้องกันมากขึ้น

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