2012-08-12 12 views
28

मैं .container ब्लॉक के अंदर कक्षा .row वाले पहले 3 तत्वों को छिपाने की कोशिश कर रहा हूं।ब्लॉक के पहले एन तत्व कैसे दिखाएं और दूसरों को सीएसएस में छुपाएं?

क्या मैं कर रहा हूँ सब .row पहले छिपा है, और फिर मैं .row:nth-child(-n+3)

jsfiddle यहाँ का उपयोग करके पहले 3 .row प्रदर्शित करने के लिए कोशिश कर रहा हूँ: http://jsfiddle.net/z8fMr/1/

मैं यहाँ दो समस्याएं हैं:

  1. पंक्ति 3 प्रदर्शित नहीं होता है, क्या मैं गलत तरीके से एनएच-बच्चे का उपयोग कर रहा हूं?
  2. क्या सब कुछ छिपाने से पहले एक बेहतर अभ्यास है और फिर मैं पहले तत्वों को प्रदर्शित करने के लिए एक विशिष्ट नियम बना रहा हूं? क्या सीएसएस में पहले 3 .row को प्रदर्शित करने का कोई तरीका है और फिर अन्य सभी .row छुपाएं?

धन्यवाद।

+0

मैं बस जेएस के साथ ऐसा करूँगा। –

उत्तर

45
  1. आप पहले बच्चे के रूप में एक .notarow है, तो आप अपने :nth-child() सूत्र में है कि के लिए खाते में करने के लिए है। कि .notarow की वजह से, अपने पहले .row माता पिता की दूसरी संतान समग्र हो जाता है, तो आप दूसरे से चौथे शुरू गिनती करने के लिए है:

    .row:nth-child(-n+4){ 
        display:block; 
    } 
    

    Updated fiddle

  2. क्या आप कर रहे हैं ठीक है ।

+0

बोल्टक्लॉक आपके बहुत स्पष्ट स्पष्टीकरण के लिए धन्यवाद। मैंने सोचा (-एन +3) पहले 3 का चयन करेगा। जो भी तत्व पहले है। – Vincent

+0

क्या आप यह भी जानते हैं कि मैं क्या करना चाहता हूं इसके लिए सबसे अच्छा अभ्यास भी है? सबकुछ छुपाएं और फिर पहले 3 तत्वों को दिखाएं => क्या सीएसएस में पहले एन तत्वों को दिखाने का एक बेहतर तरीका है? धन्यवाद – Vincent

+0

एक बेहतर तरीका प्रतीत नहीं होता है। 'Nth-child() 'का उपयोग करना इस तरह ठीक है जब तक आप वास्तविक संरचना के लिए समायोजित करते हैं और यह पर्याप्त अनुमानित है। – BoltClock

19

तुम भी CSS3 के चयनकर्ताओं की जरूरत नहीं है:

.row + .row + .row + .row { 
    display: none; 
} 

यह IE7 में भी काम करना चाहिए।
Updated fiddle

3

इसके अलावा, जियोवानी के समाधान की तरह, ऐसा कुछ भी काम कर सकता है।

.container > .row:nth-child(3) ~ .row { 
    /* this rule targets the rows after the 3rd .row */ 
    display: none; 
} 
संबंधित मुद्दे