2012-07-20 18 views
12

बढ़ाने के लिए सीएसएस डॉक्स के अनुसार: http://www.w3.org/TR/CSS21/cascade.html#specificityCSS वर्ग पुनरावृत्ति विशिष्टता

विशिष्टता (अन्य बातों के साथ) गुण और चयनकर्ता में छद्म वर्गों की संख्या से परिभाषित किया गया है।

तो, मेरा सवाल यह है कि, समान कक्षा नाम दोबारा दोहराकर विशिष्टता में वृद्धि करना संभव है?

उदाहरण के लिए:

होगा

.qtxt.qtxt.qtxt.qtxt.qtxt 
{ 
} 

से

.qtxt.lalgn 
{ 
} 

या

.lalgn .qtxt//(space added to create child selector) 
{ 
} 

एक उच्च विशिष्टता है?

+0

मुझे लगता है कि यह ब्राउज़र-विशिष्ट होने जा रहा है। –

उत्तर

20

हां, यह संभव और जानबूझकर ऐसा है। हालांकि यह सीएसएस 2 कल्पना में उल्लेख नहीं है, यह स्पष्ट रूप से Selectors 3 spec में बताया गया है:

नोट: दोहराया occurrances [वैसा] एक ही सरल चयनकर्ता की अनुमति दी जाती है और विशिष्टता बढ़ा सकते हैं।

इसलिए ब्राउज़र विशिष्टता को बढ़ाना होगा जब बार-बार सरल चयनकर्ताओं का सामना कर, जब तक कि चयनकर्ता मान्य और लागू है। यह न केवल बार-बार कक्षाओं पर लागू होता है, बल्कि बार-बार आईडी, विशेषताओं और छद्म-वर्गों पर भी लागू होता है।

अपने कोड को देखते हुए, .qtxt.qtxt.qtxt.qtxt.qtxt उच्चतम विशिष्टता होगी। अन्य दो चयनकर्ता समान रूप से विशिष्ट हैं; combinators बिल्कुल विशिष्टता गणना में कोई असर नहीं:

/* 5 classes -> specificity = 0-5-0 */ 
.qtxt.qtxt.qtxt.qtxt.qtxt 

/* 2 classes -> specificity = 0-2-0 */ 
.qtxt.lalgn 

/* 2 classes -> specificity = 0-2-0 */ 
.lalgn .qtxt 

इसके अलावा, अपने पिछले चयनकर्ता में अंतरिक्ष वंशज Combinator है; बच्चे संयोजक > है।

+1

मैंने अभी इसे मैटेरियल डिज़ाइन लाइट में सामना किया है और मुझे यह कहना है कि यह कभी भी अजीब सीएसएस स्पेगेटी घृणित होना है जिसे मैंने कभी सामना किया था। मैं अपने दिमाग को चारों ओर लपेट नहीं सकता कि कुछ लोगों ने सोचा कि सीएसएस लाइब्रेरी में ऐसा कुछ इस्तेमाल करना अच्छा विचार होगा। – Senthe

-3

आपको इस तरह की विशिष्टता को हैक करने की आवश्यकता नहीं है ... यदि आपको कोई मूल्य लागू करने की आवश्यकता है, तो !important का उपयोग करें।

+0

सुझाव के लिए धन्यवाद, और मैं इसका अधिकतर उपयोग करूँगा, लेकिन ... मुझे अभी भी मेरे प्रश्न –

+0

का उत्तर नहीं पता है! महत्वपूर्ण रूप से हल्के ढंग से उपयोग नहीं किया जाना चाहिए। आपको वास्तव में यह मानना ​​चाहिए कि विशिष्टता, आदि के उपयोग के आसपास वास्तव में कोई और तरीका नहीं है ...केवल तभी आप का उपयोग करना चाहिए! महत्वपूर्ण। – brunoais

+0

कक्षाओं को जोड़ना एक हैक नहीं है, यह विशिष्टता बढ़ाने के लिए आधिकारिक सीएसएस विनिर्देश है। '! महत्वपूर्ण' सिग्नल नोब स्थिति और सीएसएस की अज्ञानता का उपयोग करना। किसी को शायद ही कभी उपयोग करना चाहिए! महत्वपूर्ण क्योंकि यह सीएसएस विशिष्टता के बिंदु को हरा देता है। जब आपके पास 5 वर्ग हैं, जो सभी एक ही संपत्ति पर 'महत्वपूर्ण' घोषित करते हैं, तो आप अपनी सैनिटी कैसे पा सकते हैं? मैं केवल अंतिम उपाय के रूप में '! महत्वपूर्ण' का उपयोग करता हूं या किसी अन्य नोबस से भयानक सीएसएस से निपटने के दौरान और पूरे लाइब्रेरी को फिर से लिखने के बिना इसे काम करने का एकमात्र तरीका – TetraDev

1

.qtxt.qtxt.qtxt उच्चतम विशिष्टता के लिए होता है ...

http://jsfiddle.net/nXBTp/1/

हालांकि, यह केवल मामला है अगर तुम वर्ग के नाम से अधिक बार दोहराने कि किसी अन्य चयनकर्ता, उदाहरण के लिए:

http://jsfiddle.net/nXBTp/2/

+0

धन्यवाद! :) जिज्ञासा से आप किस ब्राउजर का इस्तेमाल करते थे? सफारी पर काम करता है, फ़ायरफ़ॉक्स –

+0

परीक्षण करने जा रहा है मैंने क्रोम, फ़ायरफ़ॉक्स, सफारी और आईई के नवीनतम संस्करण में परीक्षण किया। प्रत्येक के लिए एक ही परिणाम मिला। – smilledge

+0

यह व्यवहार इरादा है और ब्राउज़र की आवश्यकता है। संदर्भ के लिए मेरा जवाब देखें। – BoltClock

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