2014-06-19 12 views
10

मैंने सीएसएस 3 का उपयोग करके एसवीजी के लिए एक एनीमेशन बनाया है जो क्रोम और फ़ायरफ़ॉक्स में पूरी तरह से काम कर रहा है। यह आंशिक रूप से सफारी में काम कर रहा है लेकिन इंटरनेट एक्सप्लोरर में काम नहीं कर रहा (IE9 + जो सीएसएस एनिमेशन का समर्थन)CSS3 एनीमेशन काम नहीं कर रहा है

See Demo

सीएसएस:

@-webkit-keyframes dash { 
    70%,80% { 
    stroke-dashoffset: 0; 
    fill-opacity: 0; 
    } 

    85% { 
    fill-opacity: 0; 
    stroke-opacity: 1; 
    } 

    95% { 
    stroke: #17739D; 
    stroke-dashoffset: -301; 
    stroke-opacity: 0; 
    } 

    100% { 
    fill-opacity: 1; 
    stroke-dashoffset: -301; 
    } 
} 

@-ms-keyframes dash { 
    70%,80% { 
    stroke-dashoffset: 0; 
    fill-opacity: 0; 
    } 

    85% { 
    fill-opacity: 0; 
    stroke-opacity: 1; 
    } 

    95% { 
    stroke: #17739D; 
    stroke-dashoffset: -301; 
    stroke-opacity: 0; 
    } 

    100% { 
    fill-opacity: 1; 
    stroke-dashoffset: -301; 
    } 
} 

@-moz-keyframes dash { 
    70%,80% { 
    stroke-dashoffset: 0; 
    fill-opacity: 0; 
    } 

    85% { 
    fill-opacity: 0; 
    stroke-opacity: 1; 
    } 

    95% { 
    stroke: #17739D; 
    stroke-dashoffset: -301; 
    stroke-opacity: 0; 
    } 

    100% { 
    fill-opacity: 1; 
    stroke-dashoffset: -301; 
    } 
} 


@keyframes dash { 
    70%,80% { 
    stroke-dashoffset: 0; 
    fill-opacity: 0; 
    } 

    85% { 
    fill-opacity: 0; 
    stroke-opacity: 1; 
    } 

    95% { 
    stroke: #17739D; 
    stroke-dashoffset: -301; 
    stroke-opacity: 0; 
    } 

    100% { 
    fill-opacity: 1; 
    stroke-dashoffset: -301; 
    } 
} 

#Layer_1 { 
    margin-left: auto; 
    margin-right : auto; 
    top: 50%; 
    position: absolute; 
    left: 50%; 
    margin-left: -65px; 
    margin-top: -35px; 
} 

svg { 
    background: #fff; 
    display: block; 
} 

svg * { 
    stroke: #666; 
    #stroke: #17739D; 
    stroke-width: 1; 
    fill-opacity: 0; 
    stroke-dasharray: 350; 
    stroke-dashoffset: 440; 
} 

svg #bp_svg * { 

    -webkit-animation-name : dash; 
    -moz-animation-name : dash; 
    -ms-animation-name : dash; 
    animation-name : dash; 

    -webkit-animation-duration: 4s; 
    -moz-animation-duration: 4s; 
    -ms-animation-duration: 4s; 
    animation-duration: 4s; 

    -webkit-animation-timing-function : linear; 
    -moz-animation-timing-function : linear; 
    -ms-animation-timing-function : linear; 
    animation-timing-function : linear; 

    -webkit-animation-fill-mode : forwards; 
    -moz-animation-fill-mode : forwards; 
    -ms-animation-fill-mode : forwards; 
    animation-fill-mode : forwards; 
} 

किसी को सुलझाने के लिए करने के लिए क्या करना है मेरी मदद कर सकते सफारी और आईई में भी इसे ठीक से काम करें?

+3

मुझे नहीं पता कि आपके कोड में क्या गलत है या यदि यह जानकारी आपके लिए उपयोगी है, लेकिन आपके कोड को क्रैक करने के एक घंटे बाद, ** मैं इसे IE में एनीमेशन के बिना प्रदर्शित करने में सक्षम हूं **। मैंने सीएसएस ब्लॉक 'svg * 'में' fill-opacity' को बदल दिया। यह जांचें [fiddle] (http://jsfiddle.net/c87vY/4/) – Rohith

+0

यह एक आदर्श फॉलबैक जैसा लगता है क्योंकि एनीमेशन आइसिंग है और आपको वास्तव में केक को देखने की ज़रूरत है। – misterManSam

+0

+1 क्योंकि एनीमेशन शांत है :) –

उत्तर

0

CSS3 एनीमेशन IE9 में समर्थित नहीं हैं, जो बताता है कि यह IE9 में क्यों काम नहीं करता है। सफारी के लिए भी यही लागू होगा, यह प्रत्येक ब्राउज़र के संस्करण भी देने में मदद कर सकता है। कृपया समर्थित सुविधाओं की इस सूची का संदर्भ लें: http://caniuse.com/css-animation

+0

मॉर्गन, ठीक है, मैं सहमत हूं कि यह आईई 9 में समर्थित नहीं है लेकिन इसे आईई 10 + और सफारी –

+0

के लिए काम करना चाहिए हालांकि क्या संस्करण हैं? आप यह नहीं कह रहे हैं कि सफारी का कौन सा संस्करण है। मैंने इसे संस्करण 5.1.7 में आंशिक रूप से काम किया देखा। मैंने कल स्थानीय रूप से अपने एनिमेटन को फिर से बनाया और यह आईई 10 में काम किया था। बस चेक किया और ओह! –

+0

सफारी संस्करण 5.1.7 –

4

जबकि CSS3 एनीमेशन IE9 में समर्थित हैं, एसवीजी एनिमेशन आईई 11 में भी समर्थित नहीं हैं और यह कहना मुश्किल है कि वे कभी भी होंगे या नहीं। आपको शायद एनिमेटेड एचटीएमएल तत्वों पर भरोसा करना होगा या जावास्क्रिप्ट का उपयोग करना होगा जो सीएसएस एनिमेशन को प्रस्तुत करने के लिए इस्तेमाल किए गए हार्डवेयर त्वरण से लाभ नहीं उठाएगा लेकिन फिर भी एक व्यवहार्य समाधान हो सकता है।

एक और विचार इसे प्रीरेंडर करना होगा और इसे हर बार या केवल आईई में एक gif के रूप में तैनात करना होगा।

स्रोत: http://caniuse.com/#feat=svg-smil

+2

ओपी एसएमआईएल एनिमेशन का उपयोग नहीं कर रहा है, लेकिन सीएसएस 3 एनिमेशन: http://caniuse.com/#feat=css-animation – commonpike

0

मैं raphaeljs जावास्क्रिप्ट पुस्तकालय का उपयोग कर सुझाव है। Svg एनिमेट करने में इसकी बड़ी क्षमता है। त्वरित पूर्वावलोकन -

राफेल अभी Chrome 5.0+ Firefox 3.0+, Safari 3.0+, ओपेरा 9.5+ और इंटरनेट एक्सप्लोरर 6.0+

http://raphaeljs.com/

http://raphaeljs.com/playground.html का समर्थन करता है।

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