阅读下面的我的最终编辑!CSS3 Sprite动画无补间
是否有可能使用CSS3动画而不在帧间动画补间?
例如,我有一个图像,我有两个角色动画精灵。它们均匀间隔50px。当我使用下面的动画时,我仍然会得到一个补间(尽管速度非常快,所以它可能看起来像闪烁)。
#ball .animated{
-webkit-animation-name: animate;
-webkit-animation-duration: .5s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
-webkit-animation-timing-function: linear;}
@-webkit-keyframes animate{
0%{-webkit-transform: translate3d(0,0,0);}
49%{-webkit-transform: translate3d(0,0,0);}
50%{-webkit-transform: translate3d(-50px,0,0);}
100%{-webkit-transform: translate3d(-50px,0,0);}
因此,基于上述内容,精灵帧应当被保持在图像(X = 0像素)的持续时间的第一0-49%的第一部分,然后跳转到的第二部分图像(x = -50px)为50-100%。但是,1%的差异仍然足以在视觉上看到从0到-50px的补间。
想法?
编辑:
-webkit-animation-timing-function: cubic-bezier(1,0,1,0);
上面似乎抚平了一点,但过了一段时间,又回到闪烁。
编辑: 我没有意识到你可以使用百分比的小数。关闭1%的差距缩小到0.1%,将创建一个更快吐温这只是不可见;从我
0%{-webkit-transform: translate3d(0,0,0);}
49.9%{-webkit-transform: translate3d(0,0,0);}
50%{-webkit-transform: translate3d(-50px,0,0);}
100%{-webkit-transform: translate3d(-50px,0,0);}
最后编辑!: 好了,(用-webkit-animation-duration:
< 1S)发现web-kit动画百分比将接受小数点后第百位(即0.0001)。在相对较快的动画计时器上会产生即时翻译。我猜想有点破解,但它的确有用。
实施例:
@-webkit-keyframes sprite {
0% {
-webkit-transform: translate3d(0,0,0);
}
50% {
-webkit-transform: translate3d(0,0,0);
}
50.0001%{
-webkit-transform: translate3d(-50px,0,0);
}
100%{
-webkit-transform: translate3d(-50px,0,0);
}
}
上面的例子是100像素(图像上的每个子画面是50像素宽)与width: 50px
和overflow:hidden
到仅div容器内示出了一个子画面关闭图像在图像的一次。
注意:我正在使用translate3d,因为它在移动浏览器中进行了硬件加速,其中translateX,translateY,translateZ尚未硬件加速。
我目前正在尝试使用垂直线的立方贝塞尔。 – Empereol 2010-12-21 19:44:34