如何用js實現(xiàn)靈活的幀動畫

如何用js實現(xiàn)靈活的幀動畫 - animation.js

演示地址:http://localhost:8800/pluginAct/index.html?page=animateDemo

我們知道CSS3的屬性animate配合動畫@keyframes可以實現(xiàn)幀動畫,但是它不夠靈活,處理麻煩。本文將從兩種方式上來實現(xiàn)一個幀動畫效果,至于工作中用哪種,交由大家自己取舍。

代碼示例

一張100*500的雪碧圖box.png

CSS3動畫事件

至于animation中的steps這里不再細講

CSS3實現(xiàn)幀動畫及交互

html部分

css部分

#box{

width:100px;height:100px;background-image:url('box.png');

background-repeat: no-repeat;background-size:100%;

animation: mymovesteps(1, start)1s1;

}

@keyframesmymove {

0% {

background-position:00;

}

25% {

background-position:0-100px;

}

50% {

background-position:0-200px;

}

75% {

background-position:0-300px;

}

100% {

background-position:0-400px;

}

}

javascript部分

let$dom =document.getElementById('box');

$dom.addEventListener("webkitAnimationStart",function(){//動畫開始事件

},false);

$dom.addEventListener("webkitAnimationIteration",function(){//動畫重復(fù)播放事件

},false);

$dom.addEventListener("webkitAnimationEnd",function(){//動畫結(jié)束事件

},false);

animation.js實現(xiàn)幀動畫及交互

html部分

css部分

#box{

width:100px;height:100px;

background-repeat: no-repeat;background-size:100%;

}

javascript部分

letanimation =require('../../../../../unit/lib/lib-animate.js/animation');

let$dom =document.getElementById('box');

letimages = ['box.png'];

letmap = ["0 0","0 -100","0 -200","0 -300","0 -400","0 -500"];

run();

functionrun(){

letrepeatAnimation = animation().loadImage(images).

changePosition($dom, map, images[0]);

repeatAnimation.start(80);

}

api

任務(wù)的概念:即每執(zhí)行完一組map算一個任務(wù)

api說明

loadImage預(yù)加載雪碧圖

changePosition根據(jù)數(shù)組坐標設(shè)置dom的背景圖片位置

start動畫開始執(zhí)行 80ms/幀

repeat重復(fù)上一個任務(wù)

repeatForever無限重復(fù)上一個任務(wù) 等同于infinite

wait設(shè)置當前任務(wù)結(jié)束后下一個任務(wù)開始前的等待時間

pause暫停任務(wù)

restart繼續(xù)執(zhí)行任務(wù)

then添加一個同步任務(wù)

enterFrame自定義動畫每幀執(zhí)行的任務(wù)函數(shù)

總結(jié)

animation.js的出現(xiàn)為了解決如下問題

可以在動畫播放過程中對動畫進行控制:開始、暫停、回放、終止、取消

可以進行很精確的事件回調(diào)

動畫幀比較多的時候,可以很方便的進行雪碧圖和位置map分組

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 2,114評論 0 2
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,431評論 0 11
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標準。 注意:講述HT...
    kismetajun閱讀 28,804評論 1 45
  • 兩年前,因為一次偶然的糟心事件,使得向來頭沾枕頭就睡的我,徹夜輾轉(zhuǎn)反側(cè)。無奈之下,只能采取逃離之策,三天兩頭跑荒—...
    Kkou520閱讀 97評論 0 1
  • 【課堂筆記】 1、金融第一定理——時間是有價值的 2、金融就是為時間定價,而我們這些購買金融產(chǎn)品,做出金融決定的人...
    一路凱哥閱讀 278評論 0 0

友情鏈接更多精彩內(nèi)容