मैं एक आईडी के साथ एक div है:सीएसएस सिफारिश अंकन
<div id="main">
क्या सही है (या अंतर)
div#main {
और
#main {
सादर के बीच,
मैं एक आईडी के साथ एक div है:सीएसएस सिफारिश अंकन
<div id="main">
क्या सही है (या अंतर)
div#main {
और
#main {
सादर के बीच,
है a great doco, अत्यधिक योग्य चयनकर्ताओं साथ नियमों पर ध्यान केंद्रित:
इसके बजाय सिर्फ आईडीआईडी चयनकर्ताओं परिभाषा से अद्वितीय हैं। टैग या कक्षा क्वालीफायर सहित केवल अनावश्यक जानकारी जोड़ती है जिसे का मूल्यांकन करने की आवश्यकता है।
main
साथ एक तत्व के लिए शैली को लागू करने की
, अपने चयनकर्ता तत्व जाँच या नहीं, यह एक div
(इसी क्रम में) भी है के द्वारा पुन: अर्हता प्राप्त करेंगे।स्पष्ट करने के लिए: सीएसएस चयनकर्ताओं छोड़ दिया करने के लिए, एक ही चयनकर्ता वाक्य रचना के विपरीत सही मूल्यांकन किया जाता है जब jQuery आदि में उपयोग किया
पुन pixelistik सुझाव है कि div#main
से #main
अधिक विशिष्ट है -, हाँ, कि तकनीकी रूप से सही है, लेकिन यदि आप करने के लिए है नियम की विशिष्टता बढ़ाने के लिए इसका सहारा लें, संभावना है कि आप जिस सीएसएस पर काम कर रहे हैं उसकी संरचना उस विचार के रूप में नहीं है जैसा यह होना चाहिए।
तो अंतर यह है कि:
जब आप 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>
के लिए काम करेगा, लेकिन जब आप इसके बारे में भी पूछेंगे तो दोनों सही होंगे। मैंने ऊपर लिखा मतभेद।
#main
आईडी 'मुख्य' के साथ सब कुछ मेल खाता है, जबकि div#main
आईडी के साथ केवल <div>
तत्वों से मेल खाता है।
आदर्श रूप में, आपके पास एक ही आईडी के साथ दो तत्व नहीं होने चाहिए, इसलिए वास्तव में दोनों में कोई फर्क नहीं पड़ता है, लेकिन शायद div
निर्दिष्ट करने से संबंधित प्रदर्शन संबंधी समस्याएं परिणाम को तेज़ी से पाती हैं।
इसे वास्तव में धीमा कर देता है। जैसा कि मैंने नीचे दिए गए मेरे जवाब में कहा है, सीएसएस चयनकर्ताओं को आरटीएल का विश्लेषण किया गया है, जिसका अर्थ है कि आईडी 'मुख्य' के साथ तत्व ढूंढने पर, प्रतिपादन इंजन को यह जांचना होगा कि यह 'div' भी है या नहीं। जबकि इसके आसपास के प्रयास को नगण्य के रूप में देखा जा सकता है, मैं संरचनात्मक प्रभाव और संभवतः अवांछित विशिष्टता ओवरराइड के बारे में और चिंता करता हूं। –
@ ओ.व्ही. ब्राउज़र के बाद इसे पहचानने के बाद किसी तत्व का प्रकार चेक किया जाता है, उसके पास आरटीएल पार्सिंग के साथ कुछ लेना देना नहीं है। आरटीएल पार्सिंग संयोजकों में काम करता है। – BoltClock
@ बोल्टक्लॉक: दो परिदृश्यों पर विचार करें, जब प्रतिपादन इंजन द्वारा '#aaa .bbb' का मूल्यांकन किया जाता है और जब इसका उपयोग डीओएम तत्वों w/JS से मेल खाने के लिए किया जाता है। पहले परिदृश्य में, '.bbb' से मेल खाने वाले सभी तत्व पहले पाए जाएंगे, और उसके बाद अपने माता-पिता (आरटीएल) को देखकर फिर से योग्यता प्राप्त की जाएगी। दूसरे परिदृश्य में, '# aaa' से मेल खाने वाला तत्व (तेज़ी से) पाया जाता है और फिर इसके वंशजों को '.bbb' के विरुद्ध एक मैच के लिए खोजा जाता है। यही कहकर मेरा मतलब था * सीएसएस चयनकर्ताओं को आरटीएल * का विश्लेषण किया जाता है - एक ही समस्या को हल करने के लिए दो ध्रुवीय अलग-अलग तरीके। और मुझे नहीं पता क्यों, मैं सिर्फ प्रवाह के साथ जाता हूं :) –
दोनों सही हैं।
div#main
#main
से अधिक विशिष्ट है, जिसका अर्थ है कि पहले चयनकर्ता के साथ परिभाषित शैलियों को दूसरे के ओवरराइड कर दिया जाएगा।
यहाँ सीएसएस विशिष्टता के लिए एक अच्छा परिचय है: कुशल CSS चयनकर्ताओं का उपयोग करने पर http://htmldog.com/guides/cssadvanced/specificity/
धन्यवाद, लेकिन प्रदान किए गए कोड से संबंधित? दोनों divs। – Teson
इतना संपादित आदमी :-) – Sajmon
आईडी-टकराव? मैं वहां कभी नहीं जाता ... – Teson