2012-07-10 17 views
15

मैं सोच रहा हूं कि विशेषता चयनकर्ता की विशिष्टता क्या है। उदाहरण के लिए:विशेषता चयनकर्ता की विशिष्टता क्या है?

  • आईडी = 100 अंक
  • कक्षा = 10 अंक
  • एचटीएमएल टैग = 1 बिंदु

उदाहरण:

/* this specificity value is 100 + 10 + 1 = 111 */ 
#hello .class h2 { } 
इस HTML के साथ

:

<div class="selectform"> 
<input type="text" value="inter text"> 
<input type="text" value="inter text" class="inputag"> 
</div> 

इनमें से कौन सा 2 चयनकर्ता अधिक विशिष्ट है?

.selectform input[type="text"] { } 
.selectform .inputbg { } 

चेक डेमो के लिएhttp://tinkerbin.com/IaZW8jbI

+2

विशिष्टता को "अंक" में गिना जाता है जिस तरह से आपको लगता है: http://stackoverflow.com/questions/2809024/points-in-css- विशिष्टता – BoltClock

+0

डेमो को जांचें http://tinkerbin.com/ IaZW8jbI –

+1

आप पत्रिका को तोड़कर [इस आलेख] (http://coding.smashingmagazine.com/2009/08/17/taming-advanced-css-selectors/) की शुरुआत को पढ़ना चाहेंगे जो बताता है कि विशिष्टता कैसे काम करती है – stephenmurdoch

उत्तर

16

गुण चयनकर्ताओं समान रूप से वर्ग चयनकर्ताओं के लिए विशिष्ट हैं।

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

प्रत्येक चयनकर्ता की विशिष्टता calculated इस प्रकार है:

/* 1 class, 1 attribute, 1 type -> specificity = 0-2-1 */ 
.selectform input[type="text"] { } 

/* 2 classes     -> specificity = 0-2-0 */ 
.selectform .inputbg { } 
+3

दिलचस्प , '#foo {}' के रूप में 1-0-0 की विशिष्टता है जबकि '[id =" foo "] {} 'एक ही तत्व का चयन करता है लेकिन इसमें * बहुत * कम विशिष्टता है। – chharvey

+0

@ चार्जवे: सही - ऐसा इसलिए है क्योंकि सीएसएस के पास आईडी/क्लास चयनकर्ताओं से किसी भी विशेष विशेषता के लिए कोई मैपिंग नहीं है, इसलिए किसी भी विशेषता चयनकर्ता के पास विशेषता नाम के बावजूद समान विशिष्टता होगी। यह मैपिंग ब्राउज़र द्वारा दस्तावेज semantics के अनुसार किया जाता है, सीएसएस semantics नहीं। ऐसा ही होता है कि विशेषता और वर्ग चयनकर्ता समान विशिष्टता साझा करते हैं (चीजों को सरल रखने की अधिक संभावना है)। – BoltClock

2

सामान्य तौर पर, चयनकर्ताओं के सभी प्रकार के समान हैं; अभिव्यक्ति में चयनकर्ताओं की संख्या क्या मायने रखती है। तो आईडी = 1, कक्षा = 1, और एचटीएमएल टैग = 1.

यदि दो चयनकर्ताओं की समान विशिष्टता होती है, तो सीएसएस फ़ाइल में आगे बढ़ने वाला एक "जीतता है"। तो सुनिश्चित करें कि आप अपने सीएसएस संदर्भ सामान्य से विशिष्ट तक ऑर्डर करें; jquery-ui.css जैसे पुस्तकालय पहले जाते हैं, जबकि आपकी सीएसएस फ़ाइलें उन के बाद जाती हैं।

+0

बस जोड़ने के लिए: इन्हें ज्यादातर "सरल चयनकर्ता" के रूप में जाना जाता है। एक चयनकर्ता में, विशिष्ट सरल चयनकर्ताओं और छद्म तत्वों को विशिष्टता के लिए माना जाता है, न कि संयोजक। अल्पविराम से अलग समूह में, चयनकर्ता समूह के प्रत्येक भाग के लिए विशिष्टता की गणना अलग से की जाती है। – BoltClock

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