2012-04-03 11 views
5

जैसा कि मुझे यकीन है कि आप सभी जानते हैं, इंटरनेट एक्सप्लोरर सरल ग्रेडियेंट को संभाल सकता है। यहाँ उदाहरण के लिए, ट्विटर बूटस्ट्रैप से एक टुकड़ा है:सीएसएस: इंटरनेट एक्सप्लोरर में सरल ग्रेडियेंट <= 8

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); 

हालांकि, मैंने देखा है कुछ लोगों को तो जैसे, दो सीएसएस नियम (आईई < 8 के लिए एक और आईई 8 के लिए एक) का उपयोग करें:

filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#7fbf4d', endColorstr='#63a62f'); /* For Internet Explorer 5.5 - 7 */ 
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#7fbf4d', endColorstr='#63a62f')"; /* For Internet Explorer 8 */ 

मेरा सवाल है, दूसरा नियम वास्तव में आवश्यक है? ट्विटर बूटस्ट्रैप काफी गहन है, फिर भी यह किसी भी "-ms-filter" नियमों का उपयोग नहीं करता है। this page के अनुसार, -ms-filter विशेषता सीएसएस का विस्तार है, और IE12 मानक मोड में फ़िल्टर के समानार्थी के रूप में उपयोग किया जा सकता है।

उत्तर

3

मेरे सुझाव:

उपयोग CSS3Pie - http://css3pie.com/

यह IE6, IE7 और IE8 कि ढ़ाल सहित कई CSS3 सुविधाओं, के लिए समर्थन में पैच के लिए एक जावास्क्रिप्ट पुस्तकालय है।

हां, यदि आप चाहें तो भयानक आईई-विशिष्ट filter शैलियों का उपयोग कर सकते हैं, लेकिन CSS3Pie आपको इन सुविधाओं के लिए मानक सीएसएस शैलियों का उपयोग करने की अनुमति देता है। बहुत आसान।

हाँ, -ms-filter शैली आमतौर पर की जरूरत है:

वास्तव में अपने प्रत्यक्ष सवाल का जवाब करने के लिए। IE8 हमेशा हमें filter की बजाय हमेशा उपयोग करेगा, जिसका मुख्य रूप से आईई 6 और आईई 7 के लिए उपयोग किया जाता है। कुछ मामलों में filter IE8 में काम करेगा, लेकिन सभी नहीं, इसलिए IE8 संगतता सुनिश्चित करने के लिए -ms-filter का उपयोग करना सबसे अच्छा है।

[संपादित] उन्होंने इसे क्यों बदल दिया? क्योंकि जब उन्होंने आईई 8 जारी किया, तो माइक्रोसॉफ्ट ने "मानक अनुपालन" होने का प्रयास करने का एक बड़ा मुद्दा बना दिया।

ब्राउज़र के लिए मानक-अनुपालन होने के लिए, इसे किसी भी सीएसएस प्रॉपर्टी के लिए एक विक्रेता उपसर्ग का उपयोग करना चाहिए जो अंतिम रूप से डब्ल्यू 3 सी मानक नहीं है। तो -ms- उपसर्ग जोड़कर, माइक्रोसॉफ्ट वैश्विक सीएसएस नेमस्पेस के प्रदूषण को पूर्ववत करने (बेकार) करने की कोशिश कर रहा था।

इसके अलावा, उद्धरण जोड़े गए थे, क्योंकि पुराने filter उद्धरण के बिना वाक्यविन्यास अमान्य सीएसएस था (मुख्य रूप से progid के बाद कोलन के कारण), और कुछ ब्राउज़रों के साथ समस्याएं उत्पन्न हुईं। (मैंने कुछ समय पहले फ़ायरफ़ॉक्स 3.6 के साथ एक उदाहरण दिया था, जहां यह filter शैली के बाद सभी शैलियों को छोड़ रहा था, जो तत्व को घुमाता था - जो हो रहा था, उसे पूरा करने के लिए उम्र लेता था)।

तथ्य यह है कि माइक्रोसॉफ्ट ने मूल filter वाक्यविन्यास के साथ पिछड़ा संगतता बरकरार रखी, यह काफी हद तक व्यावहारिकता का विषय था। एमएस पुराने वाक्यविन्यास का उपयोग कर सभी साइटों को तोड़ने का जोखिम नहीं उठा सका। लेकिन माइक्रोसॉफ्ट से एक मजबूत निहितार्थ था कि डेवलपर्स दोनों का उपयोग करना चाहिए क्योंकि वे आईई के बाद के संस्करणों में पुरानी filter शैली के लिए समर्थन छोड़ देंगे। जैसे-जैसे यह निकला, उन्होंने filter और -ms-filer दोनों के लिए समर्थन छोड़ दिया, एक में गिरावट आई, लेकिन IE8 के रिलीज पर दिए गए प्रभाव आपके स्टाइलशीट में दोनों वाक्यविन्यास प्रदान करने के लिए अनुशंसित अभ्यास बनने के लिए पर्याप्त थे।

उस समय जब आईई 8 जारी किया गया था, एक्सएचटीएमएल महीने का नया स्वाद था, और पूरी तरह से सत्यापित कोड लिखना बहुत सारे डेवलपर्स के लिए सूची का शीर्ष था। कोट्स को शामिल करने के लिए सिंटैक्स के बदलाव में शायद यह एक मजबूत चालक दल था। भटकने वाले कॉलन की वजह से, सीएसएस लिखना असंभव है जो पुराने filter शैली का उपयोग करके मान्य करता है। नए -ms-filter शैलियों का उपयोग करने के बजाय लोगों ने वैध सीएसएस लिखने की अनुमति दी। जैसे-जैसे अच्छे विचार चलते हैं, यह वास्तव में काम नहीं करता था क्योंकि निश्चित रूप से लोगों को पुराने वाक्यविन्यास का उपयोग करना जारी रखना था, लेकिन इरादा अच्छा था।

यह इंगित करने लायक है कि अन्य स्वामित्व शैलियों को एक ही उपचार दिया गया था। उदाहरण के लिए, आप पुराने behavior शैली के बजाय IE8 में -ms-behavior का उपयोग कर सकते हैं। कोई भी इसका उपयोग नहीं करता है। क्यूं कर? मैं वास्तव में नहीं जानता।

जानना एक और तथ्य यह है कि डब्ल्यू 3 सी CSS property called filter मानकीकृत करने की प्रक्रिया में है। यह माइक्रोसॉफ्ट filter शैली के लिए एक पूरी तरह से अलग काम करेगा, और पूरी तरह से अलग काम करते हैं। यदि/जब यह मानकीकृत होता है और ब्राउज़र इसका समर्थन करना शुरू करते हैं, तो दो वाक्यविन्यासों के बीच एक स्पष्ट संघर्ष होगा।

+2

मुझे वास्तव में CSS3Pie पसंद नहीं है। देखें [यहां] (http://stackoverflow.com/a/7668408/937084) और [यहां] (https://twitter.com/#!/grantmccall/status/117649720297525248)। ग्रेडियेंट के मामले में, ** फ़िल्टर ** संस्करण आईई 6, आईई 7, आईई 8, और आईई 9 में काम करता है। आईई 10 के उपभोक्ता पूर्वावलोकन में, यह केवल संगतता मोड में काम करता है। ** - एमएस-फ़िल्टर ** संस्करण IE8 और IE9 में काम करता है, लेकिन * नहीं * IE10- यहां तक ​​कि संगतता मोड में भी। आईई 10 ** - एमएस-रैखिक-ढाल ** का उपयोग करता है। ऐसा लगता है कि ** - एमएस फिल्टर ** संस्करण IE8 और IE9 के लिए ही अच्छा है, लेकिन उन दोनों का समर्थन ** फिल्टर ** भी, तो क्यों ** से परेशान - एमएस फिल्टर ** संस्करण बिल्कुल? – Nick

+1

मैंने whys और कैसे -s-filter के बारे में बहुत अधिक जानकारी के साथ उत्तर अद्यतन किया है। – Spudley

+0

बीटीडब्ल्यू - आप सही हैं, CSS3Pie धीमा हो सकता है। लेकिन फिल्टर भी हैं। उनमें से कोई भी _that_ धीमा नहीं है, जब तक कि आप गंभीरता से उनका अधिक उपयोग नहीं करते। और CSS3Pie में फिल्टर का एक बड़ा फायदा है जिसमें यह आपके ग्रेडियेंट्स के लिए अल्फा चैनल रंगों का समर्थन करता है, जो एमएस की फ़िल्टर शैली नहीं करता है। आपका दूसरा विकल्प, ज़ाहिर है, पुराने आईई के लिए एक फ्लैट रंग फॉल-बैक का उपयोग करना है। जब तक यह पूरी तरह से आपकी साइट डिज़ाइन को बर्बाद नहीं करता है, या आपके दर्शकों के पास आईई उपयोगकर्ताओं का बहुत अधिक अनुपात नहीं है, तो कभी-कभी उन्हें फ्लैट रंग और स्क्वायर कोनों के लिए सरल होता है। – Spudley

0

ऐसा लगता है जैसे आपने अपने प्रश्न का उत्तर दिया। हाँ उन्हें जरूरत है। माइक्रोसॉफ्ट मानकों के साथ और अधिक पाने की कोशिश कर रहा है इसका मतलब है कि आईई के कुछ संस्करणों में फिल्टर संपत्ति के लिए अपने स्वयं के थोड़ा अलग वाक्यविन्यास नियम हैं।

आईई 7 में filter: के बाद progid:DXIma... आदि काम करेगा। लेकिन आईई 8 + के लिए आईई 7 फॉलबैक है जो यह संगतता मोड में उपयोग कर सकता है, और फ़िल्टर के लिए अधिक उचित -ms- प्रीफिक्स्ड प्रॉपर्टी, एक विक्रेता विशिष्ट सीएसएस संपत्ति को इंगित करना, और qoutes के अंदर इसका मान निर्दिष्ट करना है।

+0

** फ़िल्टर ** संस्करण आईई 6, आई 7, आईई 8, और आईई 9 में काम करता है, लेकिन * नहीं * आईई 10। ** - एमएस-फ़िल्टर ** संस्करण आईई 10 में भी काम नहीं करता है। आईई 10 ** - एमएस-रैखिक-ढाल ** का उपयोग करता है। बेशक, आईई 10 अभी तक आधिकारिक नहीं है, इसलिए यह बदलाव के अधीन है। वैसे भी, यदि संस्करण 6-9 सभी ** फ़िल्टर ** संस्करण का समर्थन करते हैं तो ** - ms-filter ** संस्करण के साथ परेशान क्यों हैं? – Nick

+0

मुझे यह जोड़ना चाहिए कि ** फ़िल्टर ** संस्करण IE10 के संगतता मोड में काम करता है, लेकिन ** - ms-filter ** संस्करण IE10 में कभी भी काम नहीं करता है-यहां तक ​​कि संगतता मोड में भी। – Nick

+0

माइक्रोसॉफ्ट के पास इस समय 2 विरोधी नीतियां हैं। पहला यह है कि वे अधिक मानकों के अनुरूप होना चाहते हैं। यही कारण है कि उन्हें '-एमएस-filter'' पेश किया गया क्योंकि यह अधिक या कम कंसिडर सही है। फिर दूसरी नीति लंबे समय तक अपने मंच और सुविधाओं का समर्थन करना है, यह संगतता मोड और गुणों की एक पूरी श्रृंखला का कारण है जो काम करते रहते हैं क्योंकि माइक्रोसॉफ्ट का आंकड़ा है कि वे सटीक रूप से भविष्यवाणी कर सकते हैं कि कोई ऐसा करना चाहता था, भले ही वह आईई के पुराने संस्करण पर लक्षित। यह वास्तव में भ्रम की मांग कर रहा है: – sg3s

0

इसे छोड़ने के लिए क्या नुकसान होगा?

यदि ब्राउज़र सीएसएस की रेखा को समझ में नहीं आता है तो यह केवल इसे अनदेखा कर देगा।

सीएसएस की उन दो पंक्तियां लगभग समान हैं। मुझे लगता है कि माइक्रोसॉफ्ट ने आईई 8 से प्रोप्रायटरी सीएसएस के लिए सिंटैक्स को बदलने का फैसला किया है - (हाइफ़न) उपसर्ग का उपयोग करने वाले अन्य ब्राउज़र जो योनक्स के लिए उपयोग कर रहे हैं।

तकनीकी रूप से सीएसएस डब्ल्यू 3 सी किसी भी तरह से अनुपालन नहीं करता है, इसलिए स्वामित्व सीएसएस की एक और पंक्ति कोई नुकसान नहीं कर सकती है।

आईई को सर्वोत्तम समय पर समझने की कोशिश करने लायक नहीं है!

+0

आपको पहले से ही एक ढाल के लिए कई बार दोहराव वाली लाइनों की आवश्यकता है, इसलिए इसकी आवश्यकता होने पर अभी तक एक और लाइन क्यों जोड़ें? इसके अलावा, ** - ms-filter ** संस्करण को रखते हुए जब ** फ़िल्टर ** संस्करण ठीक काम करता है तो KISS सिद्धांत के विरुद्ध जाता है और फ़ाइल आकार में जोड़ता है। मैं उत्सुक हूं कि डेवलपर्स जो दोनों संस्करणों का उपयोग करते हैं, ऐसा करने के लिए एक तर्कसंगत कारण है। – Nick

+0

ओह, हाँ, और IE10 के उपभोक्ता पूर्वावलोकन के रूप में, ** - एमएस फिल्टर ** संस्करण अब समर्थित नहीं है, इसलिए यह जाहिरा तौर पर IE8 और IE9 के लिए ही अच्छा है। – Nick

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