css3中用animation的steps屬性制作幀動(dòng)畫

昨天火急火燎地接到一個(gè)任務(wù),說是要做一個(gè)擲骰子的游戲,關(guān)于擲骰子期間的過渡動(dòng)畫,我本來是想用css 3d制作一個(gè)立體的骰子,然后叫UI給6張平面圖貼上去。再用translate3d來操作。然而UI考慮得十分周到,直接就給了我一個(gè)雪碧圖,并告訴我在photoshop中可以用幀動(dòng)畫來播放幾張圖片,達(dá)到類似gif的效果,程序上實(shí)現(xiàn)也大抵如此吧。
臥槽真是個(gè)神奇的UI boy。
于是我順著他的思路,用上了animation在timing-function
中的steps屬性。
先來看看UI給的圖吧,是這樣的:(注:圖片寬度1200px)
如果要播放這張圖片的話,很明顯是分為五個(gè)幀,然后定義一個(gè)動(dòng)畫,background-position從(0,0)到(-圖片的寬度,0)。首先要明白background-position的數(shù)值指的是背景圖的左上角頂點(diǎn)到容器左上角頂點(diǎn)的x,y距離。x,y正數(shù)值越大,背景圖越向右下角偏移。
所以動(dòng)畫的代碼如下:
我們先來播放一下看看效果,設(shè)置animation:spinning 2s linear infinite,效果如下:
可以看到是從左到右依次播放:2,3,4,5,6,2,3,4,5,6....。類似跑馬燈的效果,既然說到這里就順便提一下alternate,眾所周知infinite linear定義的是0 -> 100 ->0 -> 100 -> 0 -> 100......(始終正向)。而infinite alternate定義的是0 -> 100 -> 100 ->0 -> 0 -> 100......(一下正向一下反向)。修改animation:spinning 2s alternate infinite,效果如下:
但是這都不是我們需要的效果,因?yàn)閹瑒?dòng)畫的關(guān)鍵在于“瞬變”。在animation的timing-function中,有一個(gè)steps(n)屬性。表示將動(dòng)畫分為n幀。比如說,這里我們定義animation:spinning 2s steps(5) infinite。它在這個(gè)例子中表示的效果如下:
在0~400ms時(shí),position:0 0;400ms~800ms,position:-240px 0。800ms~1200ms,position:-480px 0,以此類推。需要注意的是,比如400ms時(shí)position為0 0,在401ms時(shí)position就突變成-240px 0,即是說position是瞬變的。這個(gè)位置變化沒有過渡效果,這就是steps的特點(diǎn):階躍性。
此時(shí)效果如下:
400ms一幀當(dāng)然太慢了,我們把時(shí)間適當(dāng)壓縮一下。比如總動(dòng)畫時(shí)長為300ms,那就是60ms一幀,分5幀播放完,這樣看起來就會(huì)流暢不少。最終效果如下:
總結(jié)
以上所述是小編給大家介紹的css3中用animation的steps屬性制作幀動(dòng)畫 ,希望對(duì)大家有所幫助!
相關(guān)文章
CSS3動(dòng)畫之利用requestAnimationFrame觸發(fā)重新播放功能
這篇文章主要介紹了利用requestAnimationFrame重新播放(觸發(fā))CSS3動(dòng)畫,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-11CSS3 animation – steps 函數(shù)詳解
本文通過實(shí)例代碼給大家介紹了CSS3 animation – steps 函數(shù),代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-08-30- 本篇介紹的animation屬性和傳統(tǒng)的動(dòng)畫制作一樣,能控制幀的每一步,制作出更強(qiáng)大的動(dòng)畫效果。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看2018-12-25
css3的動(dòng)畫特效之動(dòng)畫序列(animation)
這篇文章主要介紹了css3的動(dòng)畫特效之動(dòng)畫序列(animation) 的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-22- 這篇文章主要為大家詳細(xì)介紹了CSS3中Animation動(dòng)畫屬性用法,教大家如何使用animation動(dòng)畫,感興趣的小伙伴們可以參考一下2016-07-04
CSS3中animation實(shí)現(xiàn)流光按鈕效果
這篇文章主要介紹了CSS3中animation實(shí)現(xiàn)流光按鈕效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-21