閱讀下面的我的最終編輯!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