2012-02-16 11 views
5

जैसा कि मैं समझता हूं कि तत्व कम से कम विशिष्ट हैं। (तत्व बनाम आईडी)। आम तौर पर चयनकर्ताओं की विशिष्टता को समझने में मेरी मदद करें।आईडी चयनकर्ता से तत्व चयनकर्ता अधिक विशिष्ट कैसे है?

<div id="container"> 
    <div id="firstDiv">FIRST Div inside CONTAINER</div> 
    <div id="secondDiv">SECOND Div inside CONTAINER</div> 
</div> 
body{ 
    width: 780px; 
    margin: 20px auto; 
} 
#container > div:not(:last-of-type){ 
    margin-bottom: 0px; /*How its more specific than ID selector below? */ 
} 
#container { 
    border: 15px solid orange; 
    padding: 10px; 
} 
#firstDiv{ 
    margin: 50px; /*This is not taking effect*/ 
    border: 5px solid blueviolet; 
} 
#secondDiv{ 
    border: 5px solid brown;  
} 

http://jsfiddle.net/t2RRq/

+1

http://www.w3.org/TR पर एक नज़र डालें /CSS2/cascade.html#specificity। –

उत्तर

11

सीएसएस विशिष्टता को समझने के लिए, The Specificity Wars पढ़ें। ,

तो, #foo की तरह एक चयनकर्ता 1,0,0 विशिष्टता के लिए होता है, जबकि p की तरह एक तत्व चयनकर्ता 0,0,1 विशिष्टता होगा: सरल संदर्भ चादर भी नहीं है। इन दोनों में से, आईडी चयनकर्ता 100 के रूप में "जीत" होगा 1 से अधिक है।

एक अधिक विशिष्ट (हे) संस्करण जो भी छद्म तत्वों और छद्म वर्ग शामिल है यहां पाया जा सकता: http://www.standardista.com/css3/css-specificity/

+1

पृथ्वी पर कैसे मैंने इसे देखा नहीं है ?! ये जबरदस्त है। – BoltClock

+0

विशिष्टता अपने सूत्र में प्रत्यक्ष बच्चे के लिए ">" गिनती नहीं है? –

+0

@ShawnTaylor नोप। –

2

जब नियमों को लागू करने, चयनकर्ता विशिष्टता गिनती सभी सरल चयनकर्ताओं (किसी भी combinators से जुड़े हुए) द्वारा गणना, और न सिर्फ कुंजी चयनकर्ता है। इसका मतलब है कि तुम सिर्फ इन दो चयनकर्ताओं की तुलना नहीं कर रहे हैं:

div 
#firstDiv 

लेकिन आप इन दो चयनकर्ताओं तुलना कर रहे हैं:

#container > div:not(:last-of-type) 
#firstDiv 

यहाँ, पहले चयनकर्ता अधिक विशिष्ट है क्योंकि यह है:

  • एक आईडी चयनकर्ता, #container

  • एक प्रकार (तत्व) चयनकर्ता, div; और

  • एक छद्म-वर्ग, जो इस मामले में :last-of-type है; :not() छद्म वर्ग ही चयनकर्ता विशिष्टता

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

Selectors spec में एक संपूर्ण अनुभाग है जिसमें चयनकर्ता विशिष्टता की गणना कैसे की जाती है।

+0

@ShawnTaylor वहाँ है। [मेरा जवाब देखें।] (Http://stackoverflow.com/a/9311237/96656) –

+0

@ शॉन: हाँ मेरी टिप्पणी में लिंक देखें। '#container> div: नहीं (: आखिरी प्रकार का)' '0-1-0-2' है और' # firstDiv' '0-1-0-0' है। –

+0

@ फ़ेलिक्सक्लिंग: बाल प्रतीक कहीं भी गिनती नहीं है? ">" –

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