2012-05-28 13 views

उत्तर

3

है a great doco, अत्यधिक योग्य चयनकर्ताओं साथ नियमों पर ध्यान केंद्रित:

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

इसके बजाय सिर्फ आईडी main साथ एक तत्व के लिए शैली को लागू करने की

, अपने चयनकर्ता तत्व जाँच या नहीं, यह एक div (इसी क्रम में) भी है के द्वारा पुन: अर्हता प्राप्त करेंगे।स्पष्ट करने के लिए: सीएसएस चयनकर्ताओं छोड़ दिया करने के लिए, एक ही चयनकर्ता वाक्य रचना के विपरीत सही मूल्यांकन किया जाता है जब jQuery आदि में उपयोग किया

पुन pixelistik सुझाव है कि div#main से #main अधिक विशिष्ट है -, हाँ, कि तकनीकी रूप से सही है, लेकिन यदि आप करने के लिए है नियम की विशिष्टता बढ़ाने के लिए इसका सहारा लें, संभावना है कि आप जिस सीएसएस पर काम कर रहे हैं उसकी संरचना उस विचार के रूप में नहीं है जैसा यह होना चाहिए।

2

तो अंतर यह है कि:

जब आप div#main शैली लिखते हैं तो केवल <div> तत्व के लिए होगा। जब आप #main बारे में यह, <div>, <span>, <p> के लिए शैली के रूप में इस्तेमाल किया जा सकता आदि

और क्या सलाह देते हैं कहना मुश्किल है, हर डेवलपर यह यह अलग है। इसलिए उदाहरण के लिए <li> में घोंसला होने पर उदाहरण के लिए मैं span.<nameClass> का उपयोग कर रहा हूं।

#nav li span.href a { 
... 
} 

मुझे लगता है कि यह तब उपयोग किया जाता है जब आप चाहते हैं कि विशिष्ट नाम वाले किसी वर्ग में केवल एक तत्व हो।

तो जब आपका लेखन span#href यह केवल <span id="href">Simply dummy text</span> के लिए दूसरों के लिए काम करेगा। जब आप #href लिखते हैं तो यह <span id="href">Simply dummy text</span> या <a href="#" id="href">Link</a> के लिए काम करेगा, लेकिन जब आप इसके बारे में भी पूछेंगे तो दोनों सही होंगे। मैंने ऊपर लिखा मतभेद।

+0

धन्यवाद, लेकिन प्रदान किए गए कोड से संबंधित? दोनों divs। – Teson

+0

इतना संपादित आदमी :-) – Sajmon

+0

आईडी-टकराव? मैं वहां कभी नहीं जाता ... – Teson

2

#main आईडी 'मुख्य' के साथ सब कुछ मेल खाता है, जबकि div#main आईडी के साथ केवल <div> तत्वों से मेल खाता है।

आदर्श रूप में, आपके पास एक ही आईडी के साथ दो तत्व नहीं होने चाहिए, इसलिए वास्तव में दोनों में कोई फर्क नहीं पड़ता है, लेकिन शायद div निर्दिष्ट करने से संबंधित प्रदर्शन संबंधी समस्याएं परिणाम को तेज़ी से पाती हैं।

+2

इसे वास्तव में धीमा कर देता है। जैसा कि मैंने नीचे दिए गए मेरे जवाब में कहा है, सीएसएस चयनकर्ताओं को आरटीएल का विश्लेषण किया गया है, जिसका अर्थ है कि आईडी 'मुख्य' के साथ तत्व ढूंढने पर, प्रतिपादन इंजन को यह जांचना होगा कि यह 'div' भी है या नहीं। जबकि इसके आसपास के प्रयास को नगण्य के रूप में देखा जा सकता है, मैं संरचनात्मक प्रभाव और संभवतः अवांछित विशिष्टता ओवरराइड के बारे में और चिंता करता हूं। –

+2

@ ओ.व्ही. ब्राउज़र के बाद इसे पहचानने के बाद किसी तत्व का प्रकार चेक किया जाता है, उसके पास आरटीएल पार्सिंग के साथ कुछ लेना देना नहीं है। आरटीएल पार्सिंग संयोजकों में काम करता है। – BoltClock

+0

@ बोल्टक्लॉक: दो परिदृश्यों पर विचार करें, जब प्रतिपादन इंजन द्वारा '#aaa .bbb' का मूल्यांकन किया जाता है और जब इसका उपयोग डीओएम तत्वों w/JS से मेल खाने के लिए किया जाता है। पहले परिदृश्य में, '.bbb' से मेल खाने वाले सभी तत्व पहले पाए जाएंगे, और उसके बाद अपने माता-पिता (आरटीएल) को देखकर फिर से योग्यता प्राप्त की जाएगी। दूसरे परिदृश्य में, '# aaa' से मेल खाने वाला तत्व (तेज़ी से) पाया जाता है और फिर इसके वंशजों को '.bbb' के विरुद्ध एक मैच के लिए खोजा जाता है। यही कहकर मेरा मतलब था * सीएसएस चयनकर्ताओं को आरटीएल * का विश्लेषण किया जाता है - एक ही समस्या को हल करने के लिए दो ध्रुवीय अलग-अलग तरीके। और मुझे नहीं पता क्यों, मैं सिर्फ प्रवाह के साथ जाता हूं :) –

1

दोनों सही हैं।

div#main#main से अधिक विशिष्ट है, जिसका अर्थ है कि पहले चयनकर्ता के साथ परिभाषित शैलियों को दूसरे के ओवरराइड कर दिया जाएगा।

यहाँ सीएसएस विशिष्टता के लिए एक अच्छा परिचय है: कुशल CSS चयनकर्ताओं का उपयोग करने पर http://htmldog.com/guides/cssadvanced/specificity/

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