2013-06-24 11 views
9

क्या मध्यस्थ बच्चे को तत्वों की सूची में प्राप्त करने के लिए सीएसएस चयनकर्ताओं का उपयोग करने का कोई तरीका है?मध्य बाल छद्म-वर्ग

मुझे पता है कि कोई शाब्दिक :middle-child चयनकर्ता नहीं है, लेकिन जावास्क्रिप्ट का उपयोग किए बिना कोई और तरीका है?

+0

बच्चों की संख्या में परिवर्तन करता है? – jackweinbender

+0

तत्वों की संख्या पृष्ठ लोड पर सेट की गई है और उपयोगकर्ता को उपयोगकर्ता में बदल सकती है। – Jason

+1

यदि आप PHP या रूबी या जो कुछ भी कर रहे हैं, तो आप निश्चित रूप से मध्य तत्व में कक्षा जोड़ने के लिए एक फ़ंक्शन लिख सकते हैं। – jackweinbender

उत्तर

0

जावास्क्रिप्ट इस क्लाइंट पक्ष को करने का एकमात्र तरीका है।

+0

एसएएस समाधान – Muhammed

0

क्या आपने :nth-child(#) को आजमाया है?

इस पर निर्भर करता है कि आप किसको चुनना चाहते हैं, बस नंबर के साथ # को प्रतिस्थापित करें।

+0

यह केवल तभी काम करता है जब तत्वों की संख्या शुरू होने के लिए जानी जाती है। मैं ऐसा कुछ ढूंढ रहा हूं जो अज्ञात लंबाई की सूची के लिए काम करेगा। – Jason

+0

खैर, मुझे लगता है कि अगर आपको कुल संख्या पता नहीं है तो इससे कोई मदद नहीं मिलेगी, लेकिन यदि आप ऐसा करते हैं - इस पर [CSS3- nth-child SO] पर एक नज़र डालें (http: // stackoverflow।कॉम/प्रश्न/6692145/एनएच-चाइल्ड-सीएसएस-मिलान-द्वितीय -5 वीं -8 वीं-तत्व) यह आपके लिए एक समान प्रश्न है। –

2

यदि आप उन सभी तत्वों के लिए शैली लागू करना चाहते हैं जो न तो पहले बच्चे हैं और न ही अंतिम बच्चे हैं, तो आप :not(:first-child) का उपयोग कर सकते हैं, शैली लागू कर सकते हैं और फिर अंतिम तत्व से 'शैली को दूर करने' के लिए :last-child का उपयोग कर सकते हैं। लेकिन आपको 3 तत्वों से कम होने पर क्या होता है इसके बारे में सोचना होगा।

+0

होना चाहिए यदि आप डुप्लिकेशंस ('शैली को दूर ले जाएं' अनुभाग से बचाना चाहते हैं, तो मेरे उत्तर की जांच करें, जो कि सभी मध्य तत्वों को पकड़ने के लिए दो 'नहीं' चयनकर्ताओं को जोड़ती है ... :-) –

9

यह मेरे लिए अच्छी तरह से काम कर रहा है:

*:not(:first-child):not(:last-child) { 
    ... 
} 

आप इस का एक उदाहरण देख सकते हैं: http://codepen.io/bentomas/pen/Gwqoe

यह करने के लिए एक चेतावनी है कि यह केवल IE में 9+ काम करता है: http://caniuse.com/#feat=css-sel3

+1

क्या यह केवल तभी काम नहीं करेगा जब तीन आइटम हों? उस समय मैं उससे अधिक तत्वों के साथ कुछ ढूंढ रहा था। – Jason

+0

नहीं, यह उन सभी तत्वों का चयन करेगा जो पहले बच्चे नहीं हैं और अंतिम बच्चे नहीं हैं। आप इसे यहां क्रिया में देख सकते हैं: http://codepen.io/bentomas/pen/Gwqoe – bentomas

+0

ओह, जब तक आप * सटीक * मध्य बच्चे (यानी केवल एक तत्व मिलान नहीं करना चाहिए)। मैं सोच रहा था कि आप बीच में रहने वाले सभी बच्चों का चयन करना चाहते हैं। कम से कम यही है कि मैं 'मध्य-बच्चे' छद्म वर्ग की अपेक्षा करता था जब मैं इसकी तलाश में गया और यह धागा पाया। – bentomas

9

जबकि सुरुचिपूर्ण नहीं, अगर आप तत्वों की कुल संख्या के ऊपरी और निचले सीमा पता है, तुम एक जानवर बल दृष्टिकोण बीच तत्व का चयन करने लग सकता है।

उदाहरण के लिए, निम्नलिखित नियम 5, 7, या 9 तत्वों में से एक सेट में मध्यम तत्व का चयन करेंगे।

div:nth-child(3):nth-last-child(3) { 
    /* The middle element in a set of 5 is the 3rd element */ 
} 

div:nth-child(4):nth-last-child(4) { 
    /* The middle element in a set of 7 is the 4th element */ 
} 

div:nth-child(5):nth-last-child(5) { 
    /* The middle element in a set of 9 is the 5th element */ 
} 

या सास के साथ:

@for $i from 3 through 5 { 
    div:nth-child(#{$i}):nth-last-child(#{$i}) { 
     /* The middle element */ 
    } 
} 
+0

यदि तत्वों की संख्या भी हो सकती है, तो इसमें 'div: nth-child (-1 + # {$ i}) शामिल हो सकता है: nth-last-child (# {$ i})' और/या ' div: nth-child (# {$ i}): nth-last-child (-1 + # {$ i}) 'क्रमशः केंद्र के बाएं या दाएं तत्व का चयन करने के लिए। – Blazemonger

1

आप दृष्टिकोण है, तो जैसे "पहले नहीं और अंतिम नहीं" का उपयोग कर सकते हैं:

सीएसएस

li:not(:first-child):not(:last-child) { 
    color:red; 
} 

एचटीएमएल

<ul> 
    <li>First</li> 
    <li>Second</li> 
    <li>Third</li> 
</ul> 

चेक JsFiddle

+1

यदि 5 आइटम हैं तो क्या होगा? – Muhammed

+0

यह केवल तब काम करता है जब आपके पास कुल 3 आइटम होते हैं। – RaajTram

+0

@राजराज आप सही हैं, लेकिन यह सवाल था ... –

संबंधित मुद्दे