2012-06-06 34 views
57

तक सीमित है क्या सीएसएस 3 के nth-of-type को कक्षा में सीमित करने का कोई तरीका है? मुझे section तत्वों की एक गतिशील संख्या मिली है जिसमें विभिन्न लेआउट की आवश्यकता है जो उनकी लेआउट आवश्यकताओं को निर्दिष्ट करते हैं। मैं हर तीसरे .module को पकड़ना चाहता हूं, लेकिन ऐसा लगता है कि nth-of-type कक्षा तत्व प्रकार को देखता है और फिर प्रकार की गणना करता है। इसके बजाय मैं इसे केवल .module एस तक सीमित करना चाहता हूं।css3 nth प्रकार के वर्ग

धन्यवाद!

JSFiddle प्रदर्शित करने के लिए: http://jsfiddle.net/danielredwood/e2BAq/1/

HTML:

<section class="featured video"> 
    <h1>VIDEO</h1> 
</section> 
<section class="featured module"> 
    <h1>NOT A VIDEO</h1> 
</section> 
<section class="featured module"> 
    <h1>NOT A VIDEO</h1> 
</section> 
<section class="featured module"> 
    <h1>NOT A VIDEO (3)</h1> 
</section> 
<section class="featured module"> 
    <h1>NOT A VIDEO</h1> 
</section> 
<section class="featured module"> 
    <h1>NOT A VIDEO</h1> 
</section> 
<section class="featured module"> 
    <h1>NOT A VIDEO (6)</h1> 
</section> 

सीएसएस:

.featured { 
    width:31%; 
    margin:0 0 20px 0; 
    padding:0 3.5% 2em 0; 
    float:left; 
    background:#ccc; 
} 
    .featured.module:nth-of-type(3n+3) { 
    padding-right:0; 
    background:red; 
    } 
    .featured.video { 
    width:auto; 
    padding:0 0 2em 0; 
    float:none; 
    }​ 
+2

'साथ है नहीं कर रहा है: n वें -of-type() 'एक छद्म-वर्ग है, छद्म-तत्व नहीं। – BoltClock

उत्तर

55

दुर्भाग्य से, वहाँ कोई रास्ता नहीं है (कम से कम कोई भी मैं के बारे में पता) की nth-of-type चयन करने के लिए है एक वर्ग, nth-of-class मौजूद नहीं है। आपको शायद हर तीसरे .module मैन्युअल रूप से एक नई कक्षा जोड़नी होगी।

+2

कक्षा के ': nth-of-type()' का चयन करने का कोई तरीका नहीं हो सकता है, क्योंकि ': nth-of-type() 'केवल ** ** ** के nth बच्चे का चयन करता है। यह भी देखें http://stackoverflow.com/questions/6447045/css3- चयनकर्ता- फर्स्ट-of-type-with-class-name – BoltClock

+3

nth-of-type का व्यवहार इतना अप्रत्याशित है। .thing: nth-of-type (1) वास्तव में div.thing है: nth-of-type (1) ताकि यदि आप अपने चयनकर्ताओं में तत्व शामिल नहीं करते हैं तो यह भ्रमित है। अगर आपको नहीं लगता कि यह अप्रत्याशित है तो डेवलपर्स के बीच इतना भ्रम क्यों होता है? –

+6

@ डोमिनिक वाटसन: मुझे लगता है कि यहां समस्या यह है कि अधिकांश लेखक "तत्व प्रकार" शब्द से परिचित नहीं हैं, जिसका उपयोग एचटीएमएल/एक्सएमएल-विशिष्ट शब्द "टैग नाम" के स्थान पर चयनकर्ताओं द्वारा किया जाता है। यह चयनकर्ता स्तर 4 में थोड़ा सा स्पष्ट है, लेकिन बहुत ज्यादा नहीं। – BoltClock

28

ऐसा लगता है कि तुम क्या वास्तव में चाहते हैं css4 :nth-match selector है, लेकिन यह वास्तव में सबसे ब्राउज़र में समर्थित अभी तक है, तो वर्तमान में, यह करने के लिए एक ही रास्ता जावास्क्रिप्ट

$(".featured.module").filter(function(index, element){ 
    return index % 3 == 2; 
}).addClass("third"); 

http://jsfiddle.net/w3af16dj/

+2

आप 'तत्व' को फ़ंक्शन के तर्क के रूप में क्यों पास करते हैं? यह – bg17aw

+4

का उपयोग नहीं किया जाता है क्योंकि मुझे लगता है कि यह एसओ पाठकों के लिए उपयोगी संदर्भ है, जब मैंने यह उत्तर लिखा था तो मुझे यह याद रखने के लिए दस्तावेज जांचना पड़ा कि कौन सा तर्क पहले आया था। मैं यह भी मानता हूं कि कुछ लोग कोड को संशोधित करेंगे। –

+0

कोई विचार नहीं है कि यह किसको कम करेगा, वर्तमान उत्तर और एक (अभी भी) भविष्य-उत्तर प्रदान करता है। यदि आप इसे मानते हैं तो किसी को भी प्रयास को बचाने के लिए, 2017 में क्रोम में अभी भी 'nth-match' समर्थित नहीं है। मेरे लिए अन्य ब्राउज़रों की जांच करने की आवश्यकता नहीं है। –