2012-02-09 124 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