2013-05-12 159 views
8

查看CSS动画以取代加载轮子中的动画GIF。CSS动画改变帧率

这里有一个基本的例子http://jsfiddle.net/kFmY8/448/

#me { 
    -webkit-animation: rotation 2s infinite linear; 
} 

@-webkit-keyframes rotation { 
    from {-webkit-transform: rotate(0deg);} 
    to {-webkit-transform: rotate(360deg);} 
} 

我要改变的帧速率,使得每个周期有仅12帧。这将消除动画的流动性,它与它所取代的动画GIF更加匹配。

可以这样做吗?

回答

0

将动画更改为渐变的动画,然后使用CSS变换旋转属性以30度间隔固定每个块。将动画应用于每个动画,但延迟了.1s。

.wheel { 
    position:absolute; display:none; 
} 
.wheel li { 
    width:4px; height:11px; position:absolute; -webkit-transform-origin:3px 21px; background:#222; border-radius:4px; list-style:none; display:block; opacity:.25; box-shadow:0 0 1px rgba(255,255,255,0.9); 
} 
.wheel li:nth-child(1) { -webkit-transform:rotate(30deg); -webkit-animation:fadeshift 1.2s infinite linear 0s; } 
.wheel li:nth-child(2) { -webkit-transform:rotate(60deg); -webkit-animation:fadeshift 1.2s infinite linear 0.1s; } 
.wheel li:nth-child(3) { -webkit-transform:rotate(90deg); -webkit-animation:fadeshift 1.2s infinite linear 0.2s; } 
.wheel li:nth-child(4) { -webkit-transform:rotate(120deg); -webkit-animation:fadeshift 1.2s infinite linear 0.3s; } 
.wheel li:nth-child(5) { -webkit-transform:rotate(150deg); -webkit-animation:fadeshift 1.2s infinite linear 0.4s; } 
.wheel li:nth-child(6) { -webkit-transform:rotate(180deg); -webkit-animation:fadeshift 1.2s infinite linear 0.5s; } 
.wheel li:nth-child(7) { -webkit-transform:rotate(210deg); -webkit-animation:fadeshift 1.2s infinite linear 0.6s; } 
.wheel li:nth-child(8) { -webkit-transform:rotate(240deg); -webkit-animation:fadeshift 1.2s infinite linear 0.7s; } 
.wheel li:nth-child(9) { -webkit-transform:rotate(270deg); -webkit-animation:fadeshift 1.2s infinite linear 0.8s; } 
.wheel li:nth-child(10) { -webkit-transform:rotate(300deg); -webkit-animation:fadeshift 1.2s infinite linear 0.9s; } 
.wheel li:nth-child(11) { -webkit-transform:rotate(330deg); -webkit-animation:fadeshift 1.2s infinite linear 1s; } 
.wheel li:nth-child(12) { -webkit-transform:rotate(360deg); -webkit-animation:fadeshift 1.2s infinite linear 1.1s; } 
@-webkit-keyframes fadeshift { 
    from { opacity:1; } to { opacity:.1; } 
} 

<div class="appload wheel"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></div> 

QED。

18

您想要使用steps()来代替linear的缓动功能。

-webkit-animation: rotation 2s infinite linear; 

到:

http://jsfiddle.net/trolleymusic/uTd3x/

我从改变你的动画值

-webkit-animation: rotation 2s infinite steps(12); 

steps函数内部的数量将多少帧划分动画成。的参考

位:http://css-tricks.com/snippets/css/keyframe-animation-syntax/ - 约一半,有一个部分叫做步骤()

+0

将不是这种6fps的,而不是如图12所示,作为12个步骤被超过2秒分? – 2017-01-21 11:42:56

+0

是的。原始帖子每个周期需要12帧,周期为2秒长。 – Trolleymusic 2017-04-18 10:54:33