5
我正在處理具有大量CSS3動畫的HTML5橫幅。爲了製作可重用的關鍵幀動畫,我在單個元素上使用了多個動畫。除Safari瀏覽器外,它的工作完美。多個關鍵幀動畫無法在Safari瀏覽器中工作
CSS:
.text1 {
-webkit-animation: fadeOutRight 1s 3s forwards;
animation: fadeOutRight 1s 3s forwards;
}
.text2 {
-webkit-animation: fadeInLeft 1s 4s both, fadeOutRight 1s 7s forwards;
animation: fadeInLeft 1s 4s both, fadeOutRight 1s 7s forwards;
}
.text3 {
-webkit-animation: fadeInLeft 1s 8s both;
animation: fadeInLeft 1s 8s both;
}
/* fadeInLeft */
@-webkit-keyframes fadeInLeft {
0% { -webkit-transform: translateX(-100px); opacity: 0; }
100% { -webkit-transform: translateX(0px); opacity: 1; }
}
@keyframes fadeInLeft {
0% { transform: translateX(-100px); opacity: 0; }
100% { transform: translateX(0px); opacity: 1; }
}
/* fadeOutRight */
@-webkit-keyframes fadeOutRight {
0% { -webkit-transform: translateX(0px); opacity: 1; }
100% { -webkit-transform: translateX(100px); opacity: 0; }
}
@keyframes fadeOutRight {
0% { transform: translateX(0px); opacity: 1; }
100% { transform: translateX(100px); opacity: 0; }
}
可行的解決方案:
- 總結與其他元素/多元素&單一的動畫添加到每個元素。該解決方案需要額外的包裝元素樣式。
- 將多個動畫合併爲一個&該解決方案增加了
keyframes rule
的複雜性,並且對於複雜動畫而言不易維護。 - 根據另一個stackOverflow post的接受答案 -
You cannot animate same attribute more than once, on a same element, the last one will overwrite other
。 只有在我的情況下safari &第一個動畫只運行不是 第二個。如果我不在多個動畫 上動畫相同的屬性,那麼對於Safari(jsfiddle)也沒有問題。這一個不是 適合我,因爲我將需要動畫動畫 多個動畫相同的屬性。
注:
雖然我使用的是相同的元素多的動畫,但我不會在同一時間的動畫,還有每個動畫之間的延遲。
問:
是否有可能同一個元素上使用多個CSS3動畫無論動畫屬性的?