2011-01-30 6 views
83

एक मानक सूची का उपयोग करके, मैं अंतिम 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 */ 

मैं :nth-last-child() की तरह एक नया CSS3 के चयनकर्ताओं के बारे में पता कर रहा हूँ, लेकिन मैं कुछ (कि यदि संभव हो तो कुछ और ब्राउज़रों में काम करता है पसंद करते हैं विशेष रूप से आईई के बारे में परवाह नहीं है)।

+3

आईई होते हुए भी, 'के लिए ब्राउज़र समर्थन करना चाहिए: n वें-पिछले वाले बच्चे () '' nth-child() 'के समान है [quirksmode.org के अनुसार] (http://www.quirksmode.org/css/contents.html#t38)। इसके अलावा, ': nth-child()' और ': nth-last-child()' दोनों को CSS3 में पेश किया गया था, न ही उस अर्थ में पुराना या नया है। – BoltClock

उत्तर

48

nth-last-child लगता है जैसे इसे विशेष रूप से इस समस्या को हल करने के लिए डिज़ाइन किया गया था, इसलिए मुझे संदेह है कि कोई अधिक अनुकूल विकल्प है या नहीं। समर्थन pretty decent लगता है, हालांकि।

+0

लिंक के लिए धन्यवाद - ऐसा लगता है कि एनएच-चाइल्ड सपोर्ट वास्तव में एनएच-आखिरी बच्चे के समान है (मुझे यकीन था कि आईई 8 समर्थित एनएच-बच्चे लेकिन शायद नहीं)। – DisgruntledGoat

+0

@DisgruntledGoat मैंने भी सोचा, लेकिन स्पष्ट रूप से यह नहीं है ... –

1

nth-child के अर्थशास्त्र की परिभाषा के कारण, मुझे नहीं पता कि इसमें शामिल तत्वों की सूची शामिल किए बिना यह कैसे संभव है। अर्थशास्त्र का बिंदु बाल तत्वों के समूह को दोहराए जाने वाले समूहों में विभाजित करने की अनुमति देना है ( - बोल्टक्लॉक धन्यवाद) या कुछ निश्चित लंबाई के पहले भाग में, "बाकी" के बाद। आप इसके विपरीत चाहते हैं, जो nth-last-child आपको देता है।

+1

': nth-child() 'के साथ आप' nth-child (-n + m) निर्दिष्ट करके पहले 'm' तत्वों का चयन कर सकते हैं। । – BoltClock

+0

@ बोल्टक्लॉक मुझे उस पर एक सेकंड के लिए सोचना होगा ... ओह, ठीक है हाँ आप इसके बारे में सही हैं। जाहिर है कि मैं CSS3 चयनकर्ताओं का आविष्कार करते समय समिति का इरादा क्या था, इस बारे में गंभीर घोषणा करने की स्थिति में नहीं हूं :-) – Pointy

-2

यदि आप अपनी परियोजना में jQuery का उपयोग कर रहे हैं, या इसे शामिल करने के इच्छुक हैं तो आप अपने चयनकर्ता एपीआई के माध्यम से nth-last-child पर कॉल कर सकते हैं (यह अनुकरण है कि यह ब्राउज़र पार करेगा)। Here is a linknth-last-child प्लगइन पर। आप तत्वों आप में रुचि रखते थे को निशाना बनाने की इस पद्धति में ले लिया हैं:

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

और फिर शैली nth-child या nth-last-child छद्म चयनकर्ताओं के बजाय फिर से last वर्ग, आप एक अधिक संगत पार ब्राउज़र अनुभव होगा।

+0

मैंने कोशिश की और यह IE8 में काम नहीं करता है। – bobber205

+0

http://jsbin.com/AhECUP/1 – bobber205

174

यह एक सूची के अंतिम दो आईईएम का चयन करेंगे:

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>

+0

हां लेकिन आप ': nth-last-child()' का उपयोग कर रहे हैं जिसका पहले ही उल्लेख किया जा चुका है। – BoltClock

+4

(-एन + 2) => यही वह है जिसे मैं ढूंढ रहा हूं। धन्यवाद –

+13

यह स्वीकार्य उत्तर होना चाहिए, हां, एनएच-आखिरी बच्चा पहले से ही उल्लेख किया गया था, लेकिन बिल्कुल नहीं (- एन + बी) एक अच्छी चाल है – BlackTigerX

10

:nth-last-child(-n+2) चाल

+6

': nth-last-child()' का पहले से ही उल्लेख किया जा चुका है कुछ बार... – BoltClock