2009-02-04 18 views
34

काम नहीं करता है मैंने एच 2 टैग (रंग, फ़ॉन्ट आकार, आदि) के लिए कुछ शैली निर्धारित की है, लेकिन जब मैं अंदर "ए" टैग डालता हूं, तो शैली लिंक के रूप में बन जाती है। मेरा एचटीएमएल:आईई 7 सीएसएस विरासत

<h2> 
    <a class="no-decor" href="http://localhost/xxx/">Link</a> 
</h2> 

तो, जैसा कि आप देख सकते हैं, मैंने "नो-सजावट" कक्षा बनाई है। इसे "ए" टैग के लिए एच 2 की शैली का उत्तराधिकारी होना चाहिए।

a.no-decor { 
    color:inherit; 
    font-family:inherit; 
    font-size:inherit; 
    font-weight:inherit; 
    text-decoration:inherit; 
} 

फ़ायरफ़ॉक्स पर हर कोई ठीक है, लेकिन आईई अभी भी "ए" शैली (अंडरलाइन टेक्स्ट-सजावट और नीला रंग) टैग दिखाता है। मुझे पता है, मैं "h2 a" के लिए कुछ शैली सेट कर सकता हूं, लेकिन हो सकता है कि किसी भी तरह से काम करना सीएसएस को IE7 पर मूल्यों को वारिस करना संभव हो?

पीएस आईई 6 पर भी समर्थन नहीं करता है।

पी.पी.एस. कुछ उदाहरण हैं: http://www.brunildo.org/test/inherit.html

उत्तर

55

नहीं "माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर मानकों का अनुपालन करने ब्राउज़र की तरह व्यवहार करने के लिए एक जावास्क्रिप्ट पुस्तकालय है" का उपयोग करने की कोशिश कर सकते हैं, आईई किसी भी संपत्ति के लिए समर्थित कभी नहीं किया है inherit - माफ़ कीजिये। यह> = IE8 में तय किया गया है।

h2, h2 a { 
    font: something; 
    color: black; 
    text-decoration: none; 
} 

आप पर inherit निर्धारित करने की आवश्यकता नहीं है:

जबकि आप a को h2 से गुण कॉपी करने के लिए JavaScript ठीक इस्तेमाल कर सकते हैं, यह शायद सबसे आसान सिर्फ दोनों तत्वों के लिए एक ही स्टाइल नियम लागू करना है पाठ-सजावट वैसे भी, क्योंकि सजावट माता-पिता से बच्चे में विरासत में नहीं होती है: अंडरलाइन प्रभाव माता-पिता पर होता है और बच्चे के माध्यम से जाता है; बच्चा इसे हटा नहीं सकता (मॉड्यूल आईई बग)। 'पाठ सजावट: कोई नहीं' बच्चे पर, सही बात है, जब तक आप संभावित दो को रेखांकित करता है चाहते हैं ...

+0

हाँ, मैंने इस तरह से किया है। – Pawka

+14

इंटरनेट एक्सप्लोरर 7 और पुराने संस्करण दिशा और दृश्यता के अलावा किसी भी गुण के लिए मान विरासत का समर्थन नहीं करते हैं। –

+0

यह सही है :) –

4

एक बग एक बग है और कामकाज से कम कुछ भी नहीं कर सकता है।

उत्तराधिकारी here उत्तराधिकारी के लिए एक परीक्षण है।

तुम भी ie7-js की तरह एक स्क्रिप्ट है, जो

16

कोशिश

a.no-decor{ 
    color:inherit; 
    //color:expression(this.parentNode.currentStyle['color']); 
    text-decoration:none; 
} 

कि आपके नीले रंग और रेखांकन से छुटकारा पाने करेंगे । आप अंडरलाइन के लिए एक समान अभिव्यक्ति का उपयोग कर सकते हैं, लेकिन आप केवल टेक्स्ट-सजावट का उपयोग करना बेहतर होगा: कोई भी विरासत वाली पाठ-सजावट आपको किसी भी तरह देने वाला नहीं है और बिल्कुल आवश्यक नहीं होने पर अभिव्यक्तियों का उपयोग करने की आवश्यकता नहीं है (आप ' अभिव्यक्तियों का उपयोग करते समय प्रदर्शन हिट लेंगे)।

+0

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

+0

मुझे यह पसंद है। यह मेरे लिए इतना बढ़िया मामला है कि एक अभिव्यक्ति यहां परिपूर्ण है। – lupos

1

इंटरनेट एक्सप्लोरर < = 7 संस्करण direction और visibility के अलावा किसी भी गुण के लिए inherit मान का समर्थन नहीं करते हैं।

+0

जैसा कि [इस टिप्पणी] में उल्लेख किया गया है (http: // stackoverflow।कॉम/प्रश्न/511066/यानी 7-सीएसएस-विरासत-काम नहीं करता # टिप्पणी 1873681_511108) 25 दिसंबर '0 9 को। – WynandB