2015-04-22 4 views
19

ब्राउज़र और संस्करणों की विस्तृत श्रृंखला को कवर करने के लिए इस सीएसएस को उपसर्ग करने का सही तरीका क्या होगा?सीएसएस संक्रमण और परिवर्तन के लिए उपसर्गों का सही संयोजन क्या है?

संस्करण 1:

-webkit-transition: -webkit-transform .3s ease-in-out; 
    -moz-transition: -moz-transform .3s ease-in-out; 
    -ms-transition:  -ms-transform .3s ease-in-out; 
    -o-transition:  -o-transform .3s ease-in-out; 
     transition:   transform .3s ease-in-out; 

-webkit-transform: rotateX(-30deg); 
    -moz-transform: rotateX(-30deg); 
    -ms-transform: rotateX(-30deg); 
     -o-transform: rotateX(-30deg); 
     transform: rotateX(-30deg); 

या संस्करण 2:

-webkit-transition: transform .3s ease-in-out; 
    -moz-transition: transform .3s ease-in-out; 
    -ms-transition: transform .3s ease-in-out; 
    -o-transition: transform .3s ease-in-out; 
     transition transform .3s ease-in-out; 

-webkit-transform: rotateX(-30deg); 
    -moz-transform: rotateX(-30deg); 
    -ms-transform: rotateX(-30deg); 
     -o-transform: rotateX(-30deg); 
     transform: rotateX(-30deg); 

यह मेरे लिए प्रतीत होता है कि जब एक संक्रमण संपत्ति पर विक्रेता उपसर्गों का उपयोग कर, मैं भी विक्रेता के उपसर्ग में विशेषता मैं चाहता हूँ को लक्षित करना चाहिए संक्रमण।

मुझे वास्तव में कोई बंद नहीं मिल सकता है।

+0

यह सिर्फ राय है –

+0

@ श्री एलियन: तो आप कह रहे हैं कि इससे कोई फर्क नहीं पड़ता? –

+1

@ श्री एलियन मैं असहमत हूं। ऐसा लगता है कि, "यदि मैं विशेषता के लिए विक्रेता उपसर्ग का उपयोग करता हूं, तो क्या मुझे संपत्ति के लिए भी इसकी आवश्यकता है?" इसका उद्देश्य उत्तरदायी उत्तर दिया जा सकता है। – Scimonster

उत्तर

18

मैं एक very similar question में उल्लेख किया है ...

क्योंकि आप के लिए खाते में करने की जरूरत है यह, उन मामलों में जहाँ मानकीकृत सुविधाओं के लिए विक्रेता उपसर्गों अत्यंत समस्याग्रस्त हो जाते हैं में से एक है सभी अलग उपसर्ग और/या विभिन्न ब्राउज़रों के विभिन्न संस्करणों में विभिन्न सुविधाओं के अपरिवर्तनीय कार्यान्वयन।

क्या एक मुट्ठी भर। और फिर आपको इनके विभिन्न क्रमपरिवर्तनों को जोड़ना होगा। हैंडफुल क्या है।

संक्षेप में, आपको यह पता लगाने की आवश्यकता है कि प्रत्येक ब्राउज़र के कौन से संस्करणों में प्रत्येक व्यक्तिगत गुणों के लिए उपसर्ग की आवश्यकता होती है, और जब तक आपको ब्लोट नहीं लगता है, तो आपको अलग-अलग ब्राउज़रों के लिए अलग-अलग उपसर्गों को लागू करने की आवश्यकता होगी।

जुड़ा हुआ प्रश्न संक्रमणों के बजाय एनिमेशन को संदर्भित करता है जिसके परिणामस्वरूप काफी अलग-अलग नोटेशन होते हैं, लेकिन दोनों सुविधाएं AFECK जैसी समान अपरिवर्तनीय प्रक्रियाओं के माध्यम से होती हैं। ऐसा कहा जा रहा है, यहां 2D transforms और transitions के लिए caniuse.com से संगतता तालिकाएं हैं।

दूसरे शब्दों में, सिर्फ इसलिए कि एक सुविधा एक ब्राउज़र के एक संस्करण में उपसर्ग है, इसका मतलब यह नहीं है कि अन्य सुविधा एक ही ब्राउज़र के उसी संस्करण में भी उपसर्ग है। उदाहरण के लिए, क्रोम अपरिक्स्ड संक्रमण कम से कम दस प्रमुख संस्करण (26) इसे अपरिवर्तित रूपांतरित करने से पहले (36), और सफारी अभी भी को बदलने के लिए उपसर्ग की आवश्यकता है।

transition: -webkit-transform .3s ease-in-out; 

और अगर आप पूरी तरह से करने की जरूरत है, आप के साथ निम्नलिखित भी पुराने संस्करणों को कवर करना होगा:

-webkit-transition: -webkit-transform .3s ease-in-out; 

अन्य नतीजतन, आप निश्चित रूप से इस घोषणा के लिए करने जा रहे हैं ब्राउज़रों, चमत्कारिक ढंग से, (और साथ ही एनिमेशन) एक साथ दोनों संक्रमण और रूपांतरण unprefix करने में सक्षम थे, जो चीजों को बहुत आसान:

  • -ms-transition है केवल आईई 10 के प्री-रिलीज संस्करणों द्वारा उपयोग किया जाता है, जो लंबे समय से समाप्त हो चुका है। आईई का कोई अन्य संस्करण प्रीफिक्स्ड संक्रमण का उपयोग नहीं करता है, इसलिए आपको उस विशेष संक्रमण उपसर्ग को हटा देना चाहिए।

    -ms-transform उपसर्ग के साथ केवल आईई 9 द्वारा उपयोग किया जाता है; IE10 और बाद में जहाज अपरिवर्तित परिवर्तन के साथ। लेकिन सुंदर गिरावट के प्रयोजनों के लिए आप अपने -ms-transform: rotateX(-30deg); घोषणा को रखना चाह सकते हैं - बस ध्यान रखें कि इसे संक्रमण नहीं किया जा सकता क्योंकि IE9 सीएसएस संक्रमण या एनिमेशन का समर्थन नहीं करता है।

  • -moz-transition और -moz-transform करने के लिए और 15, सहित तब 16.

  • -o-transition और -o-transform में बिना उपसर्ग के लिए और 12.00, तो 12.10 में बिना उपसर्ग सहित ओपेरा द्वारा इस्तेमाल किया गया अप फ़ायरफ़ॉक्स द्वारा इस्तेमाल किया गया है, तो फिर से पहले से जुड़ा हुआ ब्लिंक पर जाने के बाद के संस्करणों में -webkit- के रूप में।

संक्षेप में, यहाँ सभी उपसर्गों है कि आप की जरूरत है, caniuse.com (मैं वर्तमान और अधिकांश भाग के लिए सही होने की भरोसा है) द्वारा दी गई जानकारी के आधार पर कर रहे हैं:

-webkit-transition: -webkit-transform .3s ease-in-out; /* Chrome < 26, Safari < 7 */ 
    -moz-transition: -moz-transform .3s ease-in-out; /* Firefox < 16 */ 
    -o-transition:  -o-transform .3s ease-in-out; /* Opera < 12.10 */ 
     transition: -webkit-transform .3s ease-in-out; /* Chrome 26-35, Safari, Opera 15-23 */ 
     transition:   transform .3s ease-in-out; /* IE10+, Firefox 16+, Chrome 36+, Opera 12.10 */ 

-webkit-transform: rotateX(-30deg); 
    -moz-transform: rotateX(-30deg); 
    -ms-transform: rotateX(-30deg); /* Only for graceful degradation in IE9, cannot be transitioned */ 
     -o-transform: rotateX(-30deg); 
     transform: rotateX(-30deg); 

न्यूनतम है कि आप इस लेखन के रूप में प्रत्येक ब्राउज़र के नवीनतम संस्करण का समर्थन करने की आवश्यकता होगी है:

 transition: -webkit-transform .3s ease-in-out; /* Chrome 26-35, Safari, Opera 15-23 */ 
     transition:   transform .3s ease-in-out; /* IE10+, Firefox 16+, Chrome 36+, Opera 12.10 */ 

-webkit-transform: rotateX(-30deg); 
     transform: rotateX(-30deg); 

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

अंतिम नोट पर: उपरोक्त उदाहरणों में दो अपरिवर्तित transition घोषणाओं को नोटिस करें? ,

transition: -webkit-transform .3s ease-in-out, transform .3s ease-in-out; 

लेकिन, दुर्भाग्य से, Chrome will erroneously completely ignore this declaration है जबकि अन्य ब्राउज़र तब भी वह अच्छे लागू होगी: अब, आप लगता है कि यह काफी आसान सिर्फ इस तरह एक भी घोषणा में उन्हें गठबंधन करने के लिए होगा।

+1

ग्रेट स्पष्टीकरण! बहुत बहुत धन्यवाद। यह उतना आसान नहीं है जितना कि ज्यादातर लोग सोचते हैं। –

+0

@ वेसेल ग्रफ्ट: और इस कारण से मैं इस प्रश्न को पोस्ट करने के लिए आपके लिए बहुत आभारी हूं। – BoltClock

+0

दुर्भाग्यवश, कई अपरिवर्तित संक्रमण घोषणाओं के परिणामस्वरूप अंतिम घोषणापत्र अन्य पहियों को ओवरराइड कर रहा है, यह मान्य है या नहीं। [समान प्रश्न] में उल्लेख किया गया है (http://stackoverflow.com/questions/20669190/browser-specific-prefixes-with-a-css-transition-on-transform#answer-26147664)। – tfE

2

अभी के रूप में, यदि आप प्रत्येक ब्राउज़र के शीर्ष-दो नवीनतम संस्करणों का समर्थन कर रहे हैं, यहाँ उपसर्गों आप की जरूरत है:

-webkit-transition: -webkit-transform .3s ease-in-out; 
transition: transform .3s ease-in-out; 

-webkit-transform: rotateX(-30deg); 
transform: rotateX(-30deg); 

तो अपने प्रश्न, हाँ, उपसर्ग संक्रमण जवाब देने के लिए उपसर्ग-परिवर्तन को लक्षित करना चाहिए। निश्चित रूप से यह सुनिश्चित करने के लिए हमेशा सत्य होता है (हालांकि अन्य गुणों के लिए जरूरी नहीं है। फ्लेक्सबॉक्स और ग्रेडियेंट जटिल उपसर्ग के अनुसार हो सकते हैं, मेरा सुझाव है कि आप उन नियमों को सीधे रखने के लिए Autoprefixer का उपयोग करें)।

इसके अलावा, इस तरह के प्रश्न को समझने का मेरा पसंदीदा तरीका CodePen में एक नए पेन पर जाना है, सीएसएस सेटिंग्स में ऑटोप्रिफ़िक्सर चालू करें, मेरा कोड पेस्ट करें और इसे संकलित करें। Autoprefixer स्वचालित रूप से प्रत्येक ब्राउज़र के शीर्ष दो के लिए उपसर्ग जोड़ता है। किंडा जादुई!

+0

पर एक नज़र डालें, संक्रमण पर उपसर्ग की आवश्यकता क्यों है? http://shouldiprefix.com/#transitions –

+0

@torazaburo यह नहीं हो सकता है, बस आपके ब्राउज़र समर्थन पर निर्भर करता है। जिस साइट पर मैं काम करता हूं वह अभी भी पुराने एंड्रॉइड ब्राउज़र पर बहुत से लोग हैं, जिन्हें अभी भी -बिक्किट की आवश्यकता है, और इससे उन्हें वहां रखने के लिए कुछ भी नुकसान नहीं पहुंचाता है। लेकिन एक अन्य कारण है कि मैं ऑटोप्रेफ़िक्सर का सुझाव देता हूं, एक बार जब आपको उनकी आवश्यकता नहीं होती है तो स्वचालित रूप से उपसर्ग को हटा देता है। –

+0

धन्यवाद, @ बोल्टक्लॉक क्या कह रहा है। –

0

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

transition: transform .3s ease-in-out; 
/*you can put -webkit-transform below, but that will only waste space*/ 
transition: -webkit-transform .3s ease-in-out; 

transform: rotateX(-30deg); 
-webkit-transform: rotateX(-30deg); 

और Voilà: यह स्वत: अद्यतन करने ब्राउज़र के नवीनतम संस्करण के लिए समर्थन को बनाए रखने के लिए उन सभी भारी उपसर्गों होने के रूप में एक ही आईई अनुकूलता है। यदि आप वास्तव में महसूस करते हैं कि उसे समर्थन प्रदान करना आवश्यक है।001% लोग जो अपने ब्राउज़र अपडेट में देरी करते रहते हैं, फिर स्क्रीन के नीचे एक छोटा सा संदेश डालें जो उपयोगकर्ता को अपने ब्राउज़र में अपडेट बटन पर क्लिक करने के लिए कहता है यदि पृष्ठ ठीक से प्रदर्शित नहीं होता है।

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