2011-08-13 9 views
222

यह एक बहुत ही सरल सवाल है लेकिन मुझे सीएसएस संक्रमण गुणों पर बहुत अच्छा दस्तावेज नहीं मिल रहा है।किसी तत्व पर एकाधिक सीएसएस संक्रमण कैसे हैं?

.nav a 
{ 
    text-transform:uppercase; 
    text-decoration:none; 
    color:#d3d3d3; 
    line-height:1.5 em; 
    font-size:.8em; 
    display:block; 
    text-align:center; 
    text-shadow: 0 -1.5em 0 rgba(255, 255, 255, 0.15); 
    -webkit-transition: color .2s linear; 
    -moz-transition: color .2s linear; 
    -o-transition: color .2s linear; 
    transition: color .2s linear; 
    -webkit-transition: text-shadow .2s linear; 
    -moz-transition: text-shadow .2s linear; 
    -o-transition: text-shadow .2s linear; 
    transition: text-shadow .2s linear; 
} 

.nav a:hover 
{ 
    color:#F7931E; 
    text-shadow: 0 1.5em 0 rgba(247, 147, 30, 0.15); 
} 

आप देख सकते हैं, संक्रमण गुण eachother अधिलेखित कर रहे हैं: यहाँ सीएसएस टुकड़ा है। जैसा कि यह खड़ा है, टेक्स्ट-छाया एनिमेट करेगा, लेकिन रंग नहीं। मैं उन्हें एक साथ एनिमेट करने के लिए कैसे प्राप्त करूं? किसी भी उत्तर के लिए धन्यवाद।

उत्तर

389

संक्रमण गुण सभी ब्राउज़रों कि बदलाव का समर्थन में सीमांकित अल्पविराम रहे हैं:

.nav a { 
    -webkit-transition: color .2s, text-shadow .2s; 
    /* And so on... */ 
} 

आसानी है डिफ़ॉल्ट, इसलिए आपको इसे निर्दिष्ट करने की आवश्यकता नहीं है। यदि आप वास्तव में रैखिक चाहते हैं, तो आपको इसे निर्दिष्ट करने की आवश्यकता होगी, यानी -webkit-transition: color .2s linear, text-shadow .2s linear;

+2

यह अल्पविराम क्यों अलग है लेकिन परिवर्तन नहीं है! मानकों पर आओ .... –

+4

मुझे लगता है कि परिवर्तन एक श्रृंखला है जहां आदेश मायने रखता है, इसलिए यदि आप कार्यात्मक चेनिंग के लिए उपयोग किया जाता है तो वाक्यविन्यास अच्छा लगता है, जबकि संक्रमण के लिए पूरी तरह से स्वतंत्र तत्वों की एक अनियमित सूची की आवश्यकता होती है, इसलिए अल्पविराम उचित – mirichan

26

कुछ निम्नलिखित की तरह एक साथ कई बदलाव के लिए अनुमति देगा:

-webkit-transition: color .2s linear, text-shadow .2s linear; 
    -moz-transition: color .2s linear, text-shadow .2s linear; 
    -o-transition: color .2s linear, text-shadow .2s linear; 
     transition: color .2s linear, text-shadow .2s linear; 

उदाहरण: http://jsbin.com/omogaf/2

+0

यह सभी ब्राउज़रों के लिए काम करता है? – devWaleed

33

भी कर सकते हैं बस काफी के साथ:

.nav a { 
    -webkit-transition: all .2s; 
} 
+37

है वास्तव में 'सभी' को हटा सकते हैं क्योंकि यह डिफ़ॉल्ट है जब तक अन्यथा निर्दिष्ट नहीं किया जाता है। – joshnh

+12

एक उत्कृष्ट बिंदु के लिए +1, लेकिन मुझे लगता है कि इसे वहां रखने के लिए उपयोगी रूप से स्पष्ट है, खासकर टीमों में स्थिरता और समझ के लिए। – XML

+2

इससे सावधान रहें! यदि मोबाइल के लिए विकास, हार्डवेयर त्वरित तत्वों के संयोजन में, नए डिवाइस गड़बड़ और पुराने डिवाइस अनुपयोगी बनाता है। –

1

यहाँ एक बार में दो गुण संक्रमण के लिए एक कम mixin है:

.transition-two(@transition1, @transition1-duration, @transition2, @transition2-duration) { 
-webkit-transition: @transition1 @transition1-duration, @transition2 @transition2-duration; 
    -moz-transition: @transition1 @transition1-duration, @transition2 @transition2-duration; 
     -o-transition: @transition1 @transition1-duration, @transition2 @transition2-duration; 
      transition: @transition1 @transition1-duration, @transition2 @transition2-duration; 
} 
+2

एचएम, स्टाइलस अच्छा लगता है :) http://pastebin.com/FphhtNvH – Pijusn

+0

autoprefixer भी अच्छा है! – rewritten

+0

ऑटोप्रिफ़िक्सर + स्टाइलस एफटीडब्ल्यू। –

20

आप आप सभी गुण एक ही एनिमेटेड रहे हैं, तो आप प्रत्येक अलग से सेट कर सकते हैं जो आपको कोड दोहराने की अनुमति नहीं देगा।

transition: all 2s; 
transition-property: color, text-shadow; 

वहाँ इसके बारे में यहाँ अधिक है: CSS transition shorthand with multiple properties?

मैं, संपत्ति सब (संक्रमण-संपत्ति अधिलेखित कर देता है 'सभी') का उपयोग कर से बचने के बाद से आप अवांछित व्यवहार और अप्रत्याशित प्रदर्शन हिट के साथ खत्म हो सकता है।

+0

अच्छी टिप, अधिक पढ़ने योग्य कोड आईएमओ – Whelkaholism

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