我有一些CSS3动画,它可以在所有支持CSS3的浏览器(野生动物园)中完美运行。是不是很奇怪 好的,这是我的代码:
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中存在,但是由于某种原因它没有显示出来! 我究竟做错了什么?
更新:好的,从您的答案中我得知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; }
和html:
<div class="board"> <div class="rays"></div> <div class="bottle"></div> </div>
在jsFiddle中尝试一下(如果您使用的是Safari 4),您会看到
找到了解决方案。在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的工作方式!:)