2012-01-18 22 views
17

सीएसएस भाषा छद्म वर्ग हमें इतना की तरह अलग अलग भाषाओं के लिए अलग अलग शैलियों निर्दिष्ट करते हैं, अनुमति देने के लिए:सीएसएस में एचटीएमएल [लैंग = "एन"] और एचटीएमएल: लैंग (एन) के बीच क्या अंतर है?

html:lang(en) .foo { ... } 

बहरहाल, यह IE7 में काम नहीं करता है, तो मैं एक विशेषता चयनकर्ता का उपयोग करके किया गया है:

html[lang="en"] .foo { ... } 

वे एक ही काम करते हैं, लेकिन क्या कोई सूक्ष्म मतभेद हैं? और यदि नहीं, तो सीएसएस का एक भाषा छद्म वर्ग क्यों है, जब विशेषता चयनकर्ता एक ही चीज़ करता है?

उत्तर

25

एचटीएमएल में, :lang() छद्म-वर्ग और विशेषता चयनकर्ता दोनों lang विशेषता के साथ एक तत्व से मेल खाते हैं।

अंतर यह है कि किसी ब्राउज़र में :lang() छद्म-वर्ग के विरुद्ध परीक्षण करते समय किसी दिए गए तत्व की भाषा निर्धारित करने के अन्य तरीके हो सकते हैं, जिसे दस्तावेज़ भाषा और/या कार्यान्वयन द्वारा परिभाषित किया जा सकता है, जबकि एक विशेषता चयनकर्ता होगा केवलके लिए एक तत्व की जांच करें जो कि विशेषता है, बिना किसी दस्तावेज़-आधारित अर्थशास्त्र के।

उदाहरण के लिए, एचटीएमएल में, छद्म वर्ग किसी भी तत्व के वंशजों से मेल खाता है जिसके लिए एक अलग lang नहीं है, इस पर निर्भर करता है कि ब्राउज़र उन वंशजों के लिए भाषा निर्धारित करता है। आम तौर पर, वंशज स्पष्ट रूप से सेट नहीं होने पर अपने पूर्वजों से भाषा विशेषता का उत्तराधिकारी होंगे।

से

spec:

:lang(C) और के बीच अंतर '| =' '| =' ऑपरेटर वह यह है कि ऑपरेटर केवल तत्व पर एक दी गई विशेषता के खिलाफ एक तुलना करता है, जबकि :lang(C) छद्म तुलना तुलना करने के लिए कक्षा दस्तावेज़ के अर्थशास्त्र के UAs ज्ञान का उपयोग करती है।

इस HTML उदाहरण में, केवल शरीर से मेल खाता है [lang|=fr] (यह एक LANG विशेषता है क्योंकि), लेकिन दोनों के शरीर और पी मैच :lang(fr) (दोनों फ्रेंच में हैं, क्योंकि)। पी [lang|=fr] से मेल नहीं खाता है क्योंकि इसमें LANG विशेषता नहीं है।

<body lang=fr> 
    <p>Je suis français.</p> 
</body> 

अपने उदाहरण में, निम्न चयनकर्ता भी अपने .foo तत्व मिलान हो जाएगा:

.foo:lang(en) 

लेकिन निम्नलिखित चयनकर्ताओं नहीं होगा, अगर यह अपने आप ही lang विशेषता नहीं है सेट:

.foo[lang="en"] 
.foo[lang|="en"] 

ब्राउज़र समर्थन के लिए, :lang() छद्म श्रेणी आईई 8 से शुरू होने का समर्थन है, इसलिए आईई 7 वास्तव में एकमात्र ब्राउज़र है जिसे आप विशेषता चयनकर्ता पर छद्म वर्ग का उपयोग करके समर्थन करने में असमर्थ होंगे।


Selectors 4 उनके दिशात्मकता के आधार पर तत्वों मिलान के लिए :dir() छद्म वर्ग परिचय देता है।चूंकि दिशा-निर्देश एक भाषा से संबंधित संपत्ति है, dir और lang गुण HTML में समान रूप से काम करते हैं, और :dir() के बीच का अंतर और इसके संबंधित विशेषता चयनकर्ता :lang() और उसके संबंधित विशेषता चयनकर्ता के बीच समान है - उस बिंदु पर जहां पहली वाक्य निम्नलिखित उद्धरण वास्तव में एक शब्द के लिए शब्द खंड में एक ही पैराग्राफ की कॉपी:lang() का वर्णन:

के बीच अंतर: dir (सी) और '' [dir = सी] '' वह यह है कि '' [डीआईआर = सी] '' केवल तत्व पर दिए गए गुण के खिलाफ तुलना करता है, जबकि: डीआईआर (सी) छद्म-वर्ग दस्तावेज़ के अर्थशास्त्र के UAs ज्ञान का प्रदर्शन करने के लिए उपयोग करता है तुलना। उदाहरण के लिए, एचटीएमएल में, तत्व की दिशात्मकता विरासत में होती है ताकि एक डीआईआर विशेषता के बिना एक बच्चा एक वैध दिशा गुण के साथ अपने निकटतम पूर्वजों के समान दिशात्मकता रखे। एक और उदाहरण के रूप में, एचटीएमएल में, एक तत्व जो '[dir = auto]' से मेल खाता है, उससे मेल खाएगा: डीआईआर (एलटीआर) या: डीआईआर (आरटीएल) तत्वों की हल की गई दिशात्मकता के आधार पर इसकी सामग्री द्वारा निर्धारित अनुसार। [एचटीएमएल 5]

+0

उत्कृष्ट स्पष्टीकरण, धन्यवाद! – john

+0

क्या 'xml: lang' विशेषता वेब ब्राउज़र के लिए अदृश्य है (चूंकि एक वेब ब्राउज़र एक HTML पार्सर है और एक्सएमएल पार्सर नहीं है)? मैं उपयोगकर्ता सीएसएस के माध्यम से [इस डब्ल्यू 3 लेख] (http://www.w3.org/International/questions/qa-css-lang) में सूचीबद्ध चयनकर्ताओं का उपयोग करने की कोशिश कर रहा हूं लेकिन वे इस वेबपृष्ठ पर काम नहीं करते हैं ] (http://www7a.biglobe.ne.jp/~nifongo/av/t23_1.htm)। उस जापानी वेबपृष्ठ पर '' तत्व केवल 'xml: lang' विशेषता निर्दिष्ट करता है, न कि' lang' विशेषता। –

+1

@ 3to5businessdays: हाँ, हालांकि मुझे यह इंगित करना चाहिए कि आधुनिक ब्राउज़रों में वास्तव में HTML और XML दोनों पार्सर्स हैं - जिसका उपयोग किया जाता है, सर्वर द्वारा दिए गए सामग्री-प्रकार द्वारा निर्धारित किया जाता है। भले ही, '' तत्व में केवल 'xml: lang' विशेषता है और' lang' विशेषता नहीं है, तो यह अमान्य है। ऐसा इसलिए है क्योंकि, एचटीएमएल में, केवल 'लांग' विशेषता लागू होती है, और इसी कारण से 'lang() 'छद्म मिलान नहीं हो रहा है। – BoltClock

0

Css सभी तत्वों के लिए attribtue चयनकर्ताओं ही नहीं, html टैग के लिए lang विशेषता का समर्थन करता है। उदाहरण के लिए एचटीएमएल <a title="Jeeha" href="foo.html">bar</a> सीएसएस में a[title=Jeeha] { ... } जैसे चुना जा सकता है।

आंशिक मिलान और रूपों पर अधिक जानकारी के लिए this लिंक देखें।

+1

वह यही नहीं पूछ रहा है। – BoltClock

+0

लगता है कि मैं बस थोड़ा सा सीखता हूं। – kontur

2

According to the spec,

दस्तावेज़ भाषा निर्दिष्ट करता है कि एक तत्व के मानव भाषा निर्धारित किया जाता है, तो यह सीएसएस में चयनकर्ताओं कि अपनी भाषा के आधार पर एक तत्व से मेल लिखने के लिए संभव है। उदाहरण के लिए, एचटीएमएल [एचटीएमएल 4] में, भाषा "लैंग" विशेषता, मेटा तत्व, और संभवतः प्रोटोकॉल (जैसे HTTP शीर्षलेख) से जानकारी के संयोजन द्वारा निर्धारित की जाती है। एक्सएमएल एक्सएमएल: लैंग नामक एक विशेषता का उपयोग करता है, और भाषा निर्धारित करने के लिए अन्य दस्तावेज़ भाषा-विशिष्ट विधियां भी हो सकती हैं।

छद्म-वर्ग ': लैंग (सी)' मिलान करता है यदि तत्व भाषा सी में है। चाहे कोई मिलान पहचानकर्ता सी पर बराबर या समान रूप से एक हाइफ़न-पृथक सबस्ट्रिंग पर आधारित हो, तत्व की भाषा मान, वैसे ही जैसे '| =' ऑपरेटर द्वारा किया जाता है। तत्व के भाषा मूल्य के विरुद्ध सी का मिलान ASCII रेंज के भीतर वर्णों के लिए केस-असंवेदनशील रूप से किया जाता है। पहचानकर्ता सी को वैध भाषा नाम नहीं होना चाहिए।

यही कारण है:

  1. यह सरल lang विशेषता के अलावा एक भाषा निर्दिष्ट करने के कई अन्य तरीकों के लिए काम करता है।
    • सबसे महत्वपूर्ण बात यह है कि, बोल्टक्लॉक के जवाब में विस्तृत रूप में, यह केवल तत्व पर ही नहीं, बल्कि तत्व तत्वों पर निर्दिष्ट भाषा (किसी भी तरह से) निर्दिष्ट भाषा का उपयोग करेगा, क्योंकि भाषा को बाल तत्वों द्वारा विरासत में मिला है।
  2. यह |= अर्थ विज्ञान, अर्थात :lang(en) और :lang(us) होगा दोनों मैच span[lang=en-us] उपयोग करता है।
  3. यह केस-संवेदी होने की गारंटी है, जबकि

चयनकर्ताओं में विशेषता नामों और मूल्यों के मामले संवेदनशीलता दस्तावेज़ भाषा पर निर्भर करता है।

+0

आपके उत्तर के लिए धन्यवाद! – john

4

एक और चीज जिसका उल्लेख किसी और ने नहीं किया - :lang() छद्मोक्लस इस बात की रूचि नहीं रखता कि कोई तत्व की भाषा कैसे सेट करता है। एक्सएचटीएमएल दस्तावेज़ (एक्सएमएल एमआईएमई प्रकार के साथ वास्तविक एक्सएचटीएमएल) में, आप xml:lang="en" का उपयोग कर सकते हैं और तत्व :lang(en) से मेल खाता है लेकिन [lang="en"] नहीं होगा।

+0

मैंने इसका उल्लेख किया !! : पी – Domenic

+0

या इसके बजाय, spec का उल्लेख है। – BoltClock

+0

प्लस मेरा बिंदु 1 ... – Domenic

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