多个关键帧动画无法在safari

时间:2016-01-04 19:37:00

标签: html5 css3 animation safari css-animations

我正在使用HTML5横幅,它有很多CSS3动画。为了制作可重复使用的关键帧动画,我在单个元素上使用多个动画。除了野生动物园之外,它的效果非常好。

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; }
}

jsfiddle link

可行的解决方案:

  1. 用另一个/更多元素包裹元素&为每个元素添加单个动画。此解决方案需要额外的样式用于包装元素。
  2. 将多个动画合并为一个&这个解决方案增加了keyframes rule的复杂性,并且对于复杂的动画来说它不易维护。
  3. 根据另一个stackOverflow post的接受回答 - You cannot animate same attribute more than once, on a same element, the last one will overwrite other。 在我的情况下,它只适用于野生动物园。第一个动画只是不运行 第二个。如果我没有在多个动画上设置相同属性的动画 那么它也适合野生动物园(jsfiddle)。这个不是 适合我,因为我需要动画相同的属性 多个动画。
  4. 注意:

    虽然我在同一个元素上使用多个动画,但我没有同时制作动画,但每个动画之间都有延迟。

    问题:

    是否可以在同一元素上使用多个CSS3动画而不管动画属性?

1 个答案:

答案 0 :(得分:-1)

出于某些原因,Safari无法通过简短的方法来描述动画,例如:

animation: test 1s 2s 3 alternate backwards

需要对其进行详细描述,并列出其单独的属性:

.class{
animation-name: bounce;
animation-duration: 4s;
animation-iteration-count: 10;
animation-direction: alternate;
animation-timing-function: ease-out;
animation-fill-mode: forwards;
animation-delay: 2s;
}