2016-01-25 44 views
206

सीएसएस में, * किसी भी तत्व से मेल खाएगी।* और * के बीच क्या अंतर है?

अक्सर, *|* का उपयोग सभी तत्वों से मेल खाने के लिए * के बजाय किया जाता है। यह आम तौर पर परीक्षण उद्देश्यों के लिए प्रयोग किया जाता है।

* और सीएसएस में *|* के बीच क्या अंतर है?

+1

इसी प्रकार के प्रश्न: [क्या करता है '* | *' सीएसएस में क्या मतलब है?] (Http://stackoverflow.com/q/3608819/247696) – Flimm

उत्तर

211

रूप W3C Selector Spec प्रति:

सार्वभौमिक चयनकर्ता एक वैकल्पिक नाम स्थान घटक की अनुमति देता है। यह इस प्रकार है के रूप में प्रयोग किया जाता है:

ns|*
नाम स्थान एनएस के सभी तत्वों

*|*
सभी तत्वों

|*
एक namespace

*
बिना सभी तत्वों को यदि कोई डिफ़ॉल्ट नाम स्थान निर्दिष्ट किया गया है, यह * | * के बराबर है। अन्यथा यह ns के बराबर है। * जहां ns ​​डिफ़ॉल्ट नेमस्पेस है।

तो, * और *|* हमेशा समान नहीं होते हैं। एक डिफ़ॉल्ट नाम अंतरिक्ष प्रदान की जाती है तो * केवल तत्वों है कि उस नाम स्थान का हिस्सा हैं का चयन करता है।


आप नेत्रहीन नीचे दो स्निपेट का उपयोग कर अंतर देख सकते हैं। पहले, एक डिफ़ॉल्ट नेमस्पेस परिभाषित किया गया है और इसलिए * चयनकर्ता केवल उस तत्व के लिए बेज रंगीन पृष्ठभूमि को लागू करता है जो उस नामसेपेस का हिस्सा है जबकि *|* सभी तत्वों के लिए सीमा लागू करता है।

@namespace "http://www.w3.org/2000/svg"; 
 

 
* { 
 
    background: beige; 
 
} 
 
*|* { 
 
    border: 1px solid; 
 
}
<a href="#">This is some link</a> 
 

 
<svg xmlns="http://www.w3.org/2000/svg"> 
 
    <a xlink:href="#"> 
 
    <text x="20" y="20">This is some link</text> 
 
    </a> 
 
</svg>

नीचे में झलकी कोई डिफ़ॉल्ट नाम स्थान परिभाषित किया गया है और इसलिए दोनों * और *|* सभी तत्वों पर लागू होता है और इसलिए उन सभी को दोनों बेज पृष्ठभूमि और काले रंग का बॉर्डर मिलता है। दूसरे शब्दों में, वे वैसे ही काम करते हैं जब कोई डिफ़ॉल्ट नेमस्पेस निर्दिष्ट नहीं होता है।

* { 
 
    background: beige; 
 
} 
 
*|* { 
 
    border: 1px solid; 
 
}
<a href="#">This is some link</a> 
 

 
<svg xmlns="http://www.w3.org/2000/svg"> 
 
    <a xlink:href="#"> 
 
    <text x="20" y="20">This is some link</text> 
 
    </a> 
 
</svg>


BoltClock टिप्पणियां (1, 2), शुरू में ही जैसे XHTML, एसवीजी आदि के रूप में XML आधारित भाषाओं के लिए लागू किया नामस्थान में बताते हैं के रूप में, लेकिन नवीनतम चश्मा के अनुसार, सभी HTML तत्व (यानी, एचटीएमएल नेमस्पेस में तत्व) को http://www.w3.org/1999/xhtml पर रखा गया है। फ़ायरफ़ॉक्स इस व्यवहार का पालन करता है और यह सभी HTML5 उपयोगकर्ता एजेंटों में सुसंगत है। आप this answer में अधिक जानकारी प्राप्त कर सकते हैं।

+4

करें नामस्थान केवल एक्सएचटीएमएल या करने के लिए आवेदन एचटीएमएल के साथ भी? – Flimm

+8

@ फ़्लेमम: केवल एक्सएमएलएम-आधारित भाषाओं जैसे एक्सएचटीएमएल और एसवीजी। लेकिन ध्यान दें कि फ़ायरफ़ॉक्स (दूसरों के बारे में निश्चित नहीं) जैसे कुछ ब्राउज़र, सीएसएस के प्रयोजनों के लिए टेक्स्ट/एचटीएमएल में भी एक्सएचटीएमएल नेमस्पेस लागू करते हैं। उदाहरण के लिए https://jsfiddle.net/BoltClock/5ta6yvvc/ देखें, और अधिक जानकारी के लिए [यह उत्तर] (http://stackoverflow.com/questions/3608819/what-does-this-mean-in-css/12979656 # 12,979,656)। – BoltClock

+2

Addendum - फ़ायरफ़ॉक्स का व्यवहार spec द्वारा है, और सभी HTML5 उपयोगकर्ता एजेंटों में संगत है। सभी एचटीएमएल तत्व (यानी * एचटीएमएल नेमस्पेस * में तत्व) को http: // www.w3.org/1999/xhtml' – BoltClock

44

*|* "किसी भी नाम स्थान में सभी तत्वों" का चयनकर्ता प्रतिनिधित्व करता है। | ई

कहाँ एनएस namespace है और ई तत्व है

एनएस: to W3C अनुसार, चयनकर्ता में बांटा गया है। डिफ़ॉल्ट रूप से, कोई नामस्थान घोषित नहीं किया जाता है। तो जब तक एक नाम स्थान स्पष्ट रूप से घोषित किया जाता है, *|* और * एक ही तत्व का चयन करेंगे।

-2

सीएसएस में, * किसी तत्व से मेल खाएगा।

| का उपयोग विशिष्ट तत्वों से मेल खाने के लिए किया जाता है। दोनों चयनकर्ता हमारे परीक्षण के लिए उपयोग किया जाता है

+2

पर रखा गया है क्या आप एक उदाहरण प्रदान कर सकते हैं? –

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