2012-01-17 20 views
76

मैं divs कि आईडी (रों) प्रपत्र एस 1 की, s2 और इतने पर के साथ एक html पृष्ठ है।सीएसएस में नियमित अभिव्यक्ति का उपयोग करना?

<div id="sections"> 
    <div id="s1">...</div> 
    <div id="s2">...</div> 
    ... 
</div> 

मैं इन वर्गों/divs (आईडी के आधार पर) के एक उप-समूह में एक सीएसएस संपत्ति लागू करना चाहता हूं। हालांकि, हर बार जब मैं div जोड़ता हूं, तो मुझे इस तरह से अनुभाग के लिए सीएसएस जोड़ना होगा।

//css 
#s1{ 
... 
} 

वहाँ सीएसएस में नियमित अभिव्यक्ति है कि मैं divs का एक सेट करने के लिए शैली लागू करने के लिए उपयोग कर सकते हैं की तरह कुछ है।

+4

आपको शायद उन आईडी के साथ तत्वों की श्रेणी की पहचान करने के लिए 'कक्षा' विशेषता का उपयोग करना चाहिए – LeeGee

उत्तर

135

आप का प्रबंधन कर सकते पिछली उत्तरों के रूप में किसी भी प्रकार के रेगेक्स के बिना उन तत्वों का चयन करना, लेकिन सीधे प्रश्न का उत्तर देने के लिए, हाँ आप चयनकर्ताओं में रेगेक्स के एक रूप का उपयोग कर सकते हैं:

#sections div[id^='s'] { 
    color: red; 
} 

यह कहता है कि # सेक्शन div के अंदर कोई भी div तत्व चुनें जिसमें अक्षर 'से शुरू होने वाली आईडी है।

fiddle here देखें।

W3 CSS selector docs here

+1

यह सीएसएस 2.1 के लिए एक सिफारिश में था; यह आईई 7, ओपेरा 9 आदि द्वारा समर्थित है .. स्रोत: https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors –

+1

यह बहुत बुरा है कि अधिक जटिल नियमित अभिव्यक्तियों में पारित नहीं हो सकता है ... – weltschmerz

8

सबसे पहले, HTML दस्तावेज़ में आइटम्स मिलान करने के कई तरीके हैं। आईडी द्वारा मिलान करना कम से कम इस्तेमाल किया जाना चाहिए।

किसी भी तत्व के लिए स्टाइल नियम लागू करने के लिए आप उपलब्ध कुछ चुनिंदा चयनकर्ताओं/पैटर्न को देखने के लिए पहले इस संदर्भ से शुरुआत करें।

http://www.w3.org/TR/selectors/

इन चयनकर्ताओं के अधिकांश आईई 9 और अन्य सभी आधुनिक ब्राउज़र के साथ काम करेंगे; महत्वपूर्ण चयनकर्ता आईई 8 में काम करते हैं (परिणाम आईई 7 और निचले स्तर में भिन्न होंगे)।

दूसरा, जब तक आपको वास्तव में आईडी द्वारा स्पष्ट रूप से आइटम नाम देने की आवश्यकता नहीं है, तो इसके बजाय एक पदानुक्रम चयनकर्ता का उपयोग करने पर विचार करें। यह कोड को अधिक क्लीनर बनाता है।

सभी DIV एस से मिलान करें जो #sections के प्रत्यक्ष वंशज हैं।

#sections > DIV 

मैच सब DIV रों जो #sections के प्रत्यक्ष या अप्रत्यक्ष वंशज हैं।

#sections DIV 

मैच पहले DIV जो #sections के एक प्रत्यक्ष वंशज है।

#sections > DIV:first-child 

एक विशिष्ट विशेषता के साथ DIV से मेल करें।

#sections > DIV[foo="bar"] 
3

आप सिर्फ अपने DIVs से प्रत्येक के लिए एक वर्ग जोड़ सकते हैं और इस तरह से वर्ग के लिए नियम लागू कर सकते हैं:

HTML:

<div class="myclass" id="s1">...</div> 
<div class="myclass" id="s2">...</div> 

सीएसएस:

//css 
.myclass 
{ 
    ... 
} 
+3

एक सामान्य नियम के रूप में मैं आईडी चयनकर्ताओं के साथ चीजों को स्टाइल करने की कोशिश नहीं करता हूं। यह विशिष्टता को बदलता है ताकि उन्हें ओवरराइड करना मुश्किल हो जो आमतौर पर मेरे अनुभव में मदद करने से ज्यादा दर्द होता है। मैं आईडी का उपयोग करता हूं ... बस सीएसएस लागू करने के लिए नहीं। – prodigitalson

+0

@prodigitalson आपकी टिप्पणी वास्तव में मेरे लिए अस्पष्ट है। –

+0

मैं यह कह रहा था कि मैं आईडी चयनकर्ताओं का उपयोग करने से बचने की कोशिश करता हूं क्योंकि यदि आप बाद में शैली को ओवरराइड करते हैं (एक विशिष्ट पृष्ठ के लिए कहें) तो आप उसी चयनकर्ता का उपयोग करने के लिए समाप्त हो जाते हैं + जो भी आप इसे बनाने के लिए उपयोग कर सकते हैं मूल चयनकर्ता से अधिक विशिष्ट। बुरा नहीं है अगर यह सिर्फ '.page # someid' है लेकिन यह वास्तव में उन्नत तालिका या स्टाइल स्टाइल पर घुमाया जा सकता है। यह आपके उत्तर की आलोचना नहीं थी क्योंकि आपके उत्तर पर सामान्य सलाह बढ़ रही थी :-) – prodigitalson

20

एक आईडी तत्व विशिष्ट रूप से तत्व की पहचान करने के लिए है। उस पर लागू कोई भी शैली उस तत्व के लिए अद्वितीय भी होनी चाहिए। यदि आपके पास शैलियों हैं तो आप पर कई तत्वों पर आवेदन करना चाहते हैं, तो आपको आईडी चयनकर्ताओं पर भरोसा करने के बजाय सभी को एक वर्ग जोड़ना चाहिए ...

<div id="sections"> 
    <div id="s1" class="sec">...</div> 
    <div id="s2" class="sec">...</div> 
    ... 
</div> 

और

.sec { 
    ... 
} 

या अपने विशिष्ट मामले में आप अपने माता पिता कंटेनर के अंदर सब डिवीजनों को चुन सकते हैं, अगर और कुछ नहीं, इसके अंदर है, इसलिए जैसे:

#sections > div { 
    ... 
} 
-4

वहाँ सीएसएस भी में विशेष तत्वों का चयन करने के लिए एक और आसान तरीका है ...

#s1, #s2, #s3 { 
    // set css attributes here 
} 

अगर आप केवल से चुनने के लिए कुछ तत्वों है, और वर्गों के साथ परेशान करने के लिए चाहते हैं न, यह आसानी से भी काम करेगा ।

+0

डाउनवोट क्यों? –

+1

@AustinHenley Bcoz यह समाधान नहीं है। जैसा कि मैंने प्रश्न में उल्लेख किया है, मैं हर बार सीएसएस नियमों को संपादित नहीं करना चाहता हूं। – Ankit

+0

यह डाउनवोट के लायक नहीं है। यदि आप जानते थे, उदाहरण के लिए, कि अधिकांश 10 divs थे, तो आप # s1 को # s10 पर डाल सकते हैं और आपको चयनकर्ताओं को स्पर्श नहीं करना पड़ेगा। ऐसा करने का सही तरीका कक्षाओं के साथ है लेकिन यह समाधान आपकी धारणाएं ले रहा है और समाधान का प्रयास कर रहा है। – jcuenod

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