CSS में तारांकित पूर्व संपत्ति का क्या अर्थ है?


85

मैं आज एक सीएसएस फ़ाइल देख रहा था और निम्नलिखित नियम निर्धारित पाया:

div.with-some-class {
    display:block;                   
    margin:0;
    padding:2px 0 0 0;
    *padding:1px 0 0 0;
    font-size:11px;   
    font-weight:normal;
    *line-height:13px;
    color:#3D9AD0;
}

स्टार का * पेडिंग और * लाइन-हाइट में क्या मतलब है?

धन्यवाद।

जवाबों:


98

यह "अंडरस्कोर हैक" के समान लाइनों के साथ "स्टार प्रॉपर्टी हैक" है। इसमें उस संपत्ति से पहले रद्दी शामिल है जिसे IE अनदेखा करता है (* IE 7 तक काम करता है, _ आईई 6 तक)।


7
धन्यवाद! और मैंने "स्टार प्रॉपर्टी हैक" को देखा और एड एलियट द्वारा इस स्पष्ट और व्यापक पोस्ट को पाया: "सीएसएस टिप: टारगेटिंग आईई 5.x, 6 और 7 अलग से" ejeliot.com/blog/63 पर
माजिद फूलापद

1
सीएसएस हैक का उपयोग करने के बजाय, आप भी यानी के लिए सशर्त टिप्पणियों की कोशिश कर सकते हैं, quirksmode.org/css/condcom.html अधिक जानकारी की जाँच करें ।
कैपी एथरियल

यह ध्यान दिया जाना चाहिए कि सफारी (7.0.1) और इससे पहले के संस्करण (सत्यापित नहीं कर सकते) कंसोल चेतावनी को फेंक देंगे यदि आप स्टार संपत्ति हैक का उपयोग करते हैं।
जिम

IE7 और इस तरह के 'सुधार' को चीरें।
क्रिस्टो किवी

नोट: "चूंकि सशर्त टिप्पणियां HTML टिप्पणी संरचना का उपयोग करती हैं, उन्हें केवल HTML फ़ाइलों में शामिल किया जा सकता है, न कि CSS फाइलों में" quirksmode.org/css/condcom.html
जॉर्ज बिरबिलिस

32

सीएसएस में? कुछ भी तो नहीं; यह एक त्रुटि है।

Internet Explorer के कुछ संस्करणों में बग्स के कारण, वे अमान्य संपत्ति नाम को सही ढंग से अनदेखा नहीं करेंगे, इसलिए यह CSS प्रदान करने का एक तरीका है जो उन ब्राउज़रों के लिए विशिष्ट है।

सशर्त टिप्पणियों का उपयोग करना स्पष्ट और सुरक्षित है।


2
वास्तव में। सीएसएस हैक जो वैध नहीं हैं सीएसएस से बचा जाना चाहिए; आप कभी नहीं जानते कि भविष्य का ब्राउज़र उनके साथ क्या कर सकता है।
16

@bobince मुझे पता है कि आपने उस टिप्पणी को अतीत में वापस कर दिया था, लेकिन हम अब पूरी तरह से सुनिश्चित हो सकते हैं कि कैसे प्रत्येक भविष्य के ब्राउज़र इसे व्याख्या करेंगे कि सीएसएस पार्सिंग एल्गोरिथ्म बहुत सख्त है और ब्राउज़र को चुपचाप ऐसे नियमों को अनदेखा करने के लिए कहता है।
एमजोल

1
@m_gol - नहीं, हम नहीं कर सकते। हम नहीं जानते कि *एक संपत्ति से पहले के अर्थ के बारे में भविष्य के सीएसएस विनिर्देश क्या कहेंगे । यदि यह एक अर्थ प्राप्त करता है, तो वर्तमान ब्राउज़र इसे अनदेखा कर देंगे ताकि एक्सटेंशन को सुरक्षित रूप से जोड़ा जा सके। यह "नियम की अनदेखी" नियम है।
क्वेंटिन

8

एस्टेरिक्स वर्ण सीएसएस में एक वैध वाइल्डकार्ड है। अकेले इसका उपयोग करने का मतलब है कि निम्नलिखित सीएसएस गुण डोम में सभी तत्व नोड्स के खिलाफ उपयोग किए जाएंगे। उदाहरण:

*{color:#000;}

उपरोक्त संपत्ति सभी DOM तत्वों पर लागू होगी, जिससे सीएसएस में प्राकृतिक कैस्केडिंग को हराया जा सकेगा। यह केवल विशेष रूप से DOM तत्वों को टैग करके ओवरराइड किया जा सकता है जहां लक्ष्यीकरण एक अद्वितीय पहचानकर्ता संदर्भ शुरू करता है। उदाहरण:

#uniqueValue div strong{color:#f00;}

उपरोक्त संपत्ति वाइल्डकार्ड को ओवरराइड करेगी और सभी मजबूत तत्वों का पाठ बनाएगी जो एक तत्व के अंदर एक div में "uniqueValue" के आईडी विशेषता मान के साथ होती है।

एक सार्वभौमिक रूप से लागू वाइल्डकार्ड का उपयोग करना, जैसे कि पहला उदाहरण, रीसेट स्टाइलशीट लिखने के लिए एक त्वरित और गंदा तरीका हो सकता है। यह त्वरित और गंदा है क्योंकि वाइल्डकार्ड के बाद प्रस्तुति की दानेदार परिभाषा संभवतः एक बहुत फूला हुआ स्टाइलशीट बनाएगी। यदि आप वाइल्डकार्ड का उपयोग करने जा रहे हैं, तो मैं इसे विशेष रूप से उपयोग करने का सुझाव दूंगा, जैसे:

* strong{color:#f00;}

उपरोक्त उदाहरण एक अद्वितीय पहचानकर्ता के साथ निर्दिष्ट नहीं अन्य सीएसएस गुणों की परवाह किए बिना सभी मजबूत तत्वों के रंग को लाल बना देगा। यह "महत्वपूर्ण" घोषणा का उपयोग करने की तुलना में बहुत सुरक्षित माना जाता है क्योंकि उस घोषणा को उद्देश्यपूर्ण व्यवहारों की प्राकृतिक कार्यक्षमता के साथ हस्तक्षेप करने के लिए जाना जाता है और यह एक स्वप्नदोष है।

आपके उदाहरण में तारांकन गलत जगह पर हैं क्योंकि वे संपत्ति घोषणाओं के अंदर प्रतीत होते हैं, कोड जो घुंघराले ब्रेसिज़ के अंदर जाता है, और जो संभवतः एक त्रुटि का कारण होगा।


4
जवाब क्या मैं के लिए googled, भले ही इसका सही जवाब नहीं
स्टीव

4

यह IE7 के लिए एक हैक है।

यदि आप इसे लिखते हैं:

.test {
    z-index: 1;
    *z-index: 2;
}

सभी नेविगेटर पर जो W3C मानक <div class="test"></div>HTMLElement का सम्मान करते हैं, z-index: 1लेकिन IE7 के लिए यह तत्व एक है z-index: 2

यह मानक नहीं है।

W3C मानक के साथ एक ही चीज़ को प्राप्त करने के लिए, इस चरणों का पालन करें:

  • कुछ Internet Explorer सशर्त टिप्पणी जोड़ें (यह अन्य सभी नवलेखन के लिए एक सरल HTML टिप्पणी है, इसलिए यह एक मानक तरीका है)।

    <! - [अगर IE 7]> <html lang = "fr" वर्ग = "अर्थात 7"> <! [endif]>

    <! - [अगर gt IE 7]> <! -> <html lang = "fr"> <! -! <! [endif] ->

और इस तरह पिछले नियमों का उपयोग करें:

.test {
    z-index: 1;
}
.ie7 .test {
    z-index: 2;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.