CSS3动画无法在safari中运行

Mau*_*o74 25 safari css3 css-animations

我有一些CSS3动画在所有支持CSS3的浏览器中都能完美运行,除了safari.怪不是吗?好的,这是我的代码:

HTML

<div class="right">
    <div class="key-arm"><img src="images/landing/key-arm.png" alt="arm" /></div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.landing .board .right {
    width: 291px;
    height: 279px;
    background: url('../images/landing/key-pnl.png');
    bottom: 16px;
    right: 250px;
    position: absolute;
}
.landing .board .right .key-arm {
    position: absolute;
    left: 44px;
    top: 18px;
    width: 41px;
    height: 120px;
}



/*=== Key Arm Animation ===*/
@-webkit-keyframes keyarm {
    0% { -webkit-transform: rotate(0deg); }
    5% { -webkit-transform: rotate(-14deg); }
    10% { -webkit-transform: rotate(0deg); }
}

@-moz-keyframes keyarm {
    0% { -moz-transform: rotate(0deg); }
    5% { -moz-transform: rotate(-14deg); }
    10% { -moz-transform: rotate(0deg); }
}

@-ms-keyframes keyarm {
    0% { -ms-transform: rotate(0deg); }
    5% { -ms-transform: rotate(-14deg); }
    10% { -ms-transform: rotate(0deg); }
}

@-o-keyframes keyarm {
    0% { -o-transform: rotate(0deg); }
    5% { -o-transform: rotate(-14deg); }
    10% { -o-transform: rotate(0deg); }
}

@keyframes keyarm{
    0% { transform: rotate(0deg); }
    5% { transform: rotate(-14deg); }
    10% { transform: rotate(0deg); }
}


.right .key-arm{
    -webkit-transform-origin: 12px 105px;
       -moz-transform-origin: 12px 105px;  
        -ms-transform-origin: 12px 105px;  
         -o-transform-origin: 12px 105px;  
            transform-origin: 12px 105px;  

   -webkit-animation: keyarm 8s ease-in-out 0s infinite;
      -moz-animation: keyarm 8s ease-in-out 4s infinite;
       -ms-animation: keyarm 8s ease-in-out 4s infinite;
        -o-animation: keyarm 8s ease-in-out 4s infinite;
           animation: keyarm 8s ease-in-out 0s infinite;
}
Run Code Online (Sandbox Code Playgroud)

好的,这在我说的Safari中不起作用,没有任何动作.
此外,仅在Safari中,键臂div仅在您调整屏幕大小时显示!它存在于DOM中但由于某种原因它没有显示出来!
我究竟做错了什么?

谢谢
毛罗

更新:从你的答案中确定我得到了Safari 4不支持@keyframes.这很奇怪,因为在同一页面上我有一个使用@keyframes的动画!

这是CSS代码:

.board .rays{
    background: url("../images/landing/rays.gif") no-repeat 0 0 red;
    height: 381px;
    left: 251px;
    opacity: 1;
    top: 80px;
    width: 408px;
    position: absolute;
}

.board .bottle{
    background: url("../images/landing/bottle.gif") no-repeat 0 0 lime;
    bottom: 30px;
    height: 405px;
    left: 276px;
    width: 357px;
    z-index: 1;
    position:absolute;
}

/*=== Rays Animation ===*/
@-webkit-keyframes rays{
    0% { -webkit-transform: rotate(0deg); }
    100% { -webkit-transform: rotate(360deg); }
}
@-moz-keyframes rays{
    0% { -moz-transform: rotate(0deg); }
    100% { -moz-transform: rotate(360deg); }
}

.board .rays{
   -webkit-animation: rays 40s linear 0s infinite;
   -moz-animation: rays 40s linear 0s infinite;
   animation: rays 40s linear 0s infinite;
}
Run Code Online (Sandbox Code Playgroud)

和HTML:

<div class="board">
    <div class="rays"></div>
    <div class="bottle"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

在jsFiddle中自己尝试(如果你有Safari 4),你会看到

Mau*_*o74 47

找到了解决方案.在Safari中使用关键帧时,您需要使用整个百分比:

这不起作用:

@-webkit-keyframes keyarm {
    0% { -webkit-transform: rotate(0deg); }
    5% { -webkit-transform: rotate(-14deg); }
    10% { -webkit-transform: rotate(0deg); }
}
Run Code Online (Sandbox Code Playgroud)

这将:

@-webkit-keyframes keyarm {
    0% { -webkit-transform: rotate(0deg); }
    5% { -webkit-transform: rotate(-14deg); }
    10% { -webkit-transform: rotate(0deg); }
    100% { -webkit-transform: rotate(0deg); }
}
Run Code Online (Sandbox Code Playgroud)

不知道为什么,但这就是Safari的工作方式!:)

  • 你确定吗? (8认同)
  • 我怀疑这也是原因.在我的例子中,我在```left```属性上有一个动画,```from```和```to```,完美地适用于所有环境(包括safari IOS).在动画```-webkit-transform```时它不再起作用了 (3认同)

小智 31

我在Safari 6中使用CSS3动画遇到麻烦,但在Safari 4(4.0.5)中则没有.

似乎速记符号在Safari 4中不起作用.

所以这不起作用:

-webkit-animation: rays 40s linear forwards;
Run Code Online (Sandbox Code Playgroud)

但这会奏效:

-webkit-animation-name: rays;
-webkit-animation-duration: 40s;
-webkit-animation-iteration-count: 1;
-webkit-animation-timing-function: linear;
-webkit-animation-fill-mode: forwards;
Run Code Online (Sandbox Code Playgroud)

  • 它仍然与2016年相同 (3认同)

dal*_*jem 7

如果你在transform注入DOM时尝试为某些东西设置动画,我必须添加一个非常短暂的延迟,如下所示:

animation: rays 40s linear 0.01s infinite;