2012-02-09 107 views
21

我有一点CSS3动画,它完美支持除Safari浏览器之外的所有支持CSS3的浏览器。奇怪是不是?确定这里是我的代码:CSS3动画无法在safari中工作

HTML

<div class="right"> 
    <div class="key-arm"><img src="images/landing/key-arm.png" alt="arm" /></div> 
</div> 

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

确定这不会在Safari正如我所说的,有没有任何动静工作。
另外,只有在Safari中,键臂div才显示,只有当您调整屏幕大小!它在DOM中,但由于某种原因,它不显示!
我在做什么错?

感谢
莫罗

UPDATE:从你的答案好吧,我得到了@keyframes不支持在Safari 4,这是奇怪,因为在同一页我用@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; 
} 

和HTML:

<div class="board"> 
    <div class="rays"></div> 
    <div class="bottle"></div> 
</div> 

试一试在的jsfiddle(如果你使用Safari 4),你会看到

+0

你能做一个jsfiddle? HTTP://的jsfiddle。净/ – 2012-02-09 13:02:27

+0

它来:http://jsfiddle.net/zalun/E4mz9/我还没有在Safari中测试它。 – Mauro74 2012-02-09 13:14:34

+0

http://jsfiddle.net/E4mz9/14/下面是正确的链接,对不起!顺便说一句,在Safari中无法正常工作,只是测试 – Mauro74 2012-02-09 13:17:57

回答

41

找到了解。在Safari中,当您使用关键帧,你需要使用整个百分比:

这是行不通的:

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

这将:

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

不知道为什么,但就是这样Safari的作品! :)

+6

你确定吗? – SquareCat 2012-12-03 01:55:06

+2

我怀疑这也是原因。就我而言,我在''''left'''属性上使用''''''''和''''''来完成所有环境(包括safari IOS)的动画。它不工作时,动画'''-webkit-transform''' – svassr 2015-03-24 17:58:22

+0

@svassr你有没有发现什么是问题? – 2015-08-31 10:22:23

28

我在Safari 6中使用CSS3动画时遇到麻烦,但在Safari 4(4.0.5)中无法使用。

看来,速记符号不会在Safari 4

工作,所以这是行不通的:

-webkit-animation: rays 40s linear forwards; 

但是这将工作:

-webkit-animation-name: rays; 
-webkit-animation-duration: 40s; 
-webkit-animation-iteration-count: 1; 
-webkit-animation-timing-function: linear; 
-webkit-animation-fill-mode: forwards; 
+0

我在Safari 7中遇到了同样的问题,解决了这个问题。谢谢。 – 2015-07-13 21:57:18

+3

这仍然是2016年的 – 2016-05-19 13:29:39

+0

这对我有效。 iPhone 6s上的Safari并没有使用简写语法来播放动画。使用longhand /个人规则起作用。谢谢! – 2016-08-12 09:47:42

0
@-webkit-keyframes { <- let this symbol to the same line 
} - > 

这适用于iPhone 3的iOS 6.1.6 与-webkit-前缀上的变换和动画ñ

5

在你试图尽快它注入DOM动画上的东西transform的情况下,我不得不增加一个非常短暂的延迟,像这样:

animation: rays 40s linear 0.01s infinite;

+0

哇,这是我在iOS 10.2上为移动Safari中的translateY制作动画的唯一答案。 – 2017-03-11 21:30:24

+0

谢谢!工作 – JCraine 2017-08-16 06:13:42

相关问题