2014-10-28 51 views
0

我有一些jQuery正在爲下面的動畫成功添加所需的類。在非Chrome瀏覽器中動畫的問題

1)首先,下面的動畫只在Chrome中播放。我的IE(版本11.0)和Firefox(32.0.3)根本不播放動畫。 2)其次,如果我沒有'不透明度:1',在我的動畫類中,該元素將退色爲不透明度0(其原始值)。有沒有更好的方式讓它停留在動畫的最終值而不必將其設置在動畫中?在動畫類中設置元素的屬性似乎有點不直觀,因爲它不明確何時生效(在關鍵幀之前,之後)。

HTML:

<!-- Appear after 1 second --> 
<h1 data-appear='1'>1</h1> 

CSS:

h1 { 
    opacity: 0; 
} 

@-webkit-keyframes appear { 
    0% { opacity: 0; } 
    50% { opacity: 0; } 
    100% { opacity: 1; } 
} 
@-moz-keyframes appear { 
    0% { opacity: 0; } 
    50% { opacity: 0; } 
    100% { opacity: 1; } 
} 
@-o-keyframes appear { 
    0% { opacity: 0; } 
    50% { opacity: 0; } 
    100% { opacity: 1; } 
} 
@keyframes appear { 
    0% { opacity: 0; } 
    50% { opacity: 0; } 
    100% { opacity: 1; } 
} 

.appear.delay1 { 
    animation-duration: 1s; 
    -o-animation-duration: 1s; 
    -moz-animation-duration: 1s; 
    -webkit-animation-duration: 1s; 

    animation: appear; 
    -o-animation-name: appear; 
    -moz-animation-name: appear; 
    -webkit-animation-name: appear; 

    opacity: 1; 
} 

回答

2

1)的CSS規則的順序中的祕密所在。您在定義持續時間時尚未定義動畫。如果我切換順序我的作品在最新的Firefox:

.appear.delay1{ 

    animation: appear; 
    -o-animation: appear; 
    -moz-animation: appear; 
    -webkit-animation: appear; 

    animation-duration: 1s; 
    -o-animation-duration: 1s; 
    -moz-animation-duration: 1s; 
    -webkit-animation-duration: 1s; 
} 

2)你不需要,如果你定義填充的方式來定義不透明度。使用填充模式,您可以指定動畫完成時動畫的狀態。在這種情況下,您希望100%粘貼,所以您應該將填充模式設置爲轉發。

-o-animation-fill-mode: forwards; 
-moz-animation-fill-mode: forwards; 
-webkit-animation-fill-mode: forwards; 
animation-fill-mode: forwards; 

我在下面撥弄拼湊一起:

http://jsfiddle.net/mxa377m4/

+0

是否瀏覽器的順序也很重要?我注意到人們傾向於在瀏覽器支持列表的底部放置最基本的聲明(在你的情況下,'animation-fill-mode')。 – mariocatch 2014-10-28 14:40:39

+0

我想這並不重要。我確實相信最新支持的聲明是適用於該元素的聲明。例如:如果最新的chrome支持'-webkit'和非前綴的。它將使用最底層的聲明。在上面的代碼中是'animation-fill-mode'。如果所有的陳述都是平等的,那應該不重要。如果供應商的實現與前綴不一致的W3C版本不同,那麼它的確如此。 – Hless 2014-10-28 14:43:13

+0

因此,它類似於聲明和設置元素的寬度5次,每次使用不同的值......將使用最新的一個。因此,如果瀏覽器支持多個前綴,它們都與它相等,這意味着最新的一個優先。我知道他們說避免「謝謝」的評論,但無論如何 - 感謝您的快速結果和偉大的洞察力。 – mariocatch 2014-10-28 14:46:22