मैं !important
प्रदर्शन को बाधित नहीं कर सकता , स्वाभाविक रूप से वैसे भी नहीं। यदि, हालांकि, आपके सीएसएस के साथ छेड़छाड़ की गई है !important
, तो यह इंगित करता है कि आप चयनकर्ताओं से अधिक योग्यता प्राप्त कर रहे हैं और बहुत विशिष्ट हैं और आप विशिष्टता जोड़ने के लिए माता-पिता या क्वालीफायर से बाहर हैं। नतीजतन, आपका सीएसएस फूला हुआ हो जाएगा (जो प्रदर्शन को बाधित करेगा ) और बनाए रखना मुश्किल है।
यदि आप कुशल CSS लिखना चाहते हैं तो आप केवल उतना ही विशिष्ट होना चाहते हैं जितना आपको होना चाहिए और मॉड्यूलर CSS लिखना होगा । आईडी (हैश के साथ) का उपयोग करने, चयनकर्ताओं का पीछा करने, या चयनकर्ताओं को अर्हता प्राप्त करने से बचना उचित है।
#
सीएसएस के साथ उपसर्ग किए गए आईडी शातिर रूप से विशिष्ट हैं, उस बिंदु पर जहां 255 कक्षाएं एक आईडी (द्वारा फेल्ड : @Faust ) को ओवरराइड नहीं करेंगी । आईडी की एक गहरी मार्ग समस्या है, हालांकि, उन्हें अद्वितीय होना है, इसका मतलब है कि आप उन्हें डुप्लिकेट शैलियों के लिए फिर से उपयोग नहीं कर सकते हैं, इसलिए आप दोहराई जाने वाली शैलियों के साथ रैखिक सीएसएस लिखना समाप्त करते हैं। ऐसा करने का नतीजा परियोजना को अलग-अलग करने के लिए अलग-अलग होगा, जो कि पैमाने पर निर्भर करता है, लेकिन स्थिरता को बहुत नुकसान होगा और किनारे के मामलों में, प्रदर्शन भी।
कैसे आप बिना विशिष्टता जोड़ सकते हैं !important
,, चेनिंग योग्यता, या आईडी (अर्थात् #
)
एचटीएमएल
<div class="eg1-foo">
<p class="eg1-bar">foobar</p>
</div>
<div id="eg2-foo">
<p id="eg2-bar">foobar</p>
</div>
<div class="eg3-foo">
<p class="eg3-foo">foobar</p>
</div>
सीएसएस
.eg1-foo {
color: blue;
}
.eg1-bar {
color: red;
}
[id='eg2-foo'] {
color: blue;
}
[id='eg2-bar'] {
color: red;
}
.eg3-foo {
color: blue;
}
.eg3-foo.eg3-foo {
color: red;
}
JSFiddle
ठीक है, तो यह कैसे काम करता है?
पहला और दूसरा उदाहरण समान काम करते हैं, पहला शाब्दिक रूप से एक वर्ग है, और दूसरा विशेषता चयनकर्ता है। वर्गों और गुण चयनकर्ताओं में समान विशिष्टता है। .eg1/2-bar
इसका रंग विरासत में नहीं मिला .eg1/2-foo
क्योंकि इसका अपना नियम है।
तीसरा उदाहरण चयनकर्ताओं को अर्हता प्राप्त करने या उनका पीछा करने जैसा लगता है, लेकिन ऐसा नहीं है। जब आप माता-पिता, पूर्वजों, और इसी तरह से चयनकर्ताओं के साथ उपसर्ग कर रहे हों; यह विशिष्टता जोड़ता है। योग्यता समान है, लेकिन आप चयनकर्ता के आवेदन के तत्व को परिभाषित करते हैं। योग्यता ul.class
:ul .class
मुझे यकीन नहीं है कि आप इस तकनीक को क्या कहेंगे, लेकिन व्यवहार जानबूझकर है और है W3C द्वारा प्रलेखित है
एक ही सरल चयनकर्ता के बार-बार होने की अनुमति है और विशिष्टता को बढ़ाते हैं।
क्या होता है जब दो नियमों के बीच विशिष्टता समान होती है?
जैसा कि @BttClock ने बताया , यदि कई महत्वपूर्ण घोषणाएँ हैं, तो कल्पना यह निर्धारित करती है कि सबसे विशिष्ट व्यक्ति को पूर्वता लेना चाहिए।
नीचे दिए गए उदाहरण में, दोनों में .foo
और .bar
समान विशिष्टता है, इसलिए व्यवहार सीएसएस के कैस्केडिंग प्रकृति में वापस आ जाता है, जिससे सीएसएस में घोषित अंतिम नियम पूर्वता का दावा करता है .foo
।
एचटीएमएल
<div>
<p class="foo bar">foobar</p>
</div>
सीएसएस
.bar {
color: blue !important;
}
.foo {
color: red !important;
}
JSFiddle