在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ JavaScript 動(dòng)畫
書單
JavaScript 動(dòng)畫
HTML
CSS Reset
屬性操作
DOM 事件
閉包
Photoshop
Atom 文本編輯器
表單操作
布局解決方案
類型系統(tǒng)
開發(fā)實(shí)踐
數(shù)據(jù)通信
變量作用域
BOM
JavaScript 程序設(shè)計(jì)
前端工程師概述
CSS
響應(yīng)式布局
表達(dá)式與運(yùn)算符
基本語法
JavaScript 介紹
版本控制
布局
調(diào)試器
背景
圖片保存
多媒體
文檔樹
列表操作
Sublime 編輯器
盒模型
常見布局樣例
類型識(shí)別
變形
數(shù)據(jù)存儲(chǔ)
選擇器
頁面架構(gòu)
開發(fā)及調(diào)試工具
頁面模塊化
節(jié)點(diǎn)操作
測(cè)量及取色
瀏覽器兼容
HTML 簡(jiǎn)介
內(nèi)置對(duì)象
實(shí)體字符
產(chǎn)品前端架構(gòu)
協(xié)作流程
切圖
工具, 面板, 視圖
正則表達(dá)式
動(dòng)畫
語句
面向?qū)ο?/span>
HTML 語法
HTML 標(biāo)簽
技術(shù)選擇
樣式操作
圖片優(yōu)化與合并
語法
DOM 編程藝術(shù)
Canvas
接口設(shè)計(jì)
頁面優(yōu)化
文本

JavaScript 動(dòng)畫

JavaScript 動(dòng)畫

,為動(dòng)畫的最小單位,一個(gè)靜態(tài)的圖像。幀頻,每秒播放的幀的數(shù)量。一個(gè)動(dòng)畫是由很多幀組成的,因?yàn)槿搜鄣臅毫籼匦?,?dāng)圖片交替的速度大于每秒 30 幀以上既有動(dòng)畫的感覺。

實(shí)現(xiàn)方式

  • gif 圖像形式存儲(chǔ),容量大,需第三方制圖工具制作。
  • flash 需要第三方制作工具,不推薦。
  • CSS3 實(shí)現(xiàn)動(dòng)畫具有局限性
  • JavaScript 可實(shí)現(xiàn)大部分上面幾類可實(shí)現(xiàn)的動(dòng)畫效果

JavaScript 動(dòng)畫三要素

http://wiki.jikexueyuan.com/project/fend_note/images/J/javascript-animation.jpg" alt="" />

定時(shí)器

setInterval

  • func 為執(zhí)行改變屬性的操作
  • delay 為出發(fā)時(shí)間間隔(毫秒為單位)
  • para1 為執(zhí)行時(shí)可傳入改變屬性函數(shù)的參數(shù)
var intervalId = setInterval(func, delay[, param1, param2, ...]);
clearInterval(intervalId);

NOTE:使用 setInterval 可以調(diào)用一次定時(shí)器既可實(shí)現(xiàn)連貫的動(dòng)畫。使用 clearInterval 即可清除動(dòng)畫效果。

setTimeout

  • func 為執(zhí)行改變屬性的操作
  • delay 為出發(fā)時(shí)間間隔(毫秒為單位)默認(rèn)為 0
  • para1 為執(zhí)行時(shí)可傳入改變屬性函數(shù)的參數(shù)
var timeoutId = setTimeout(func[, delay, param1, param2, ...]);
clearTimeout(timeoutId);

NOTE:使用 setTimeout 實(shí)現(xiàn)動(dòng)畫,則需要在動(dòng)畫每一幀結(jié)束時(shí)再次調(diào)用定時(shí)器。但它無需清除定時(shí)器。

區(qū)別

  • setTimeout 在延時(shí)后只執(zhí)行一次,setInterval 則會(huì)每隔一個(gè)延時(shí)期間后會(huì)再執(zhí)行。

requestAnimationFrame

類似于 setTimeout 但是無需設(shè)定時(shí)間間隔。此定時(shí)器為 HTML5 中的新標(biāo)準(zhǔn),其間隔時(shí)間不由用戶控制,而是由顯示器的刷新頻率決定。(市面上的顯示器刷新頻率為每秒刷新60次)

優(yōu)勢(shì)

  • 無需設(shè)置間隔時(shí)間
  • 動(dòng)畫流暢度高
var requestId = requestAnimationFrame(func);
cancelAnimationFrame(requestId);

NOTE:使用它來實(shí)現(xiàn)動(dòng)畫與 setTimeout 類似,需要每次每幀結(jié)束時(shí)再次調(diào)用。不可設(shè)置時(shí)間間隔(系統(tǒng)決定),時(shí)間間隔為16.67毫秒一幀。

常見動(dòng)畫

大多的復(fù)雜動(dòng)畫都是有下列的簡(jiǎn)單動(dòng)畫所組成的。

  • 形變,改變?cè)氐膶捀?/li>
  • 位移,改變?cè)叵鄬?duì)位置
  • 旋轉(zhuǎn)
  • 透明度
  • 其他...

動(dòng)畫函數(shù)

下面的例子為以 px 為單位的動(dòng)畫代碼

var animation = function(ele, attr, from, to) {
  var distance = Math.abs(to - from);
  var stepLength = distance/100;
  var sign = (to - from)/distance;
  var offset = 0;
  var step = function(){
    var tmpOffset = offset + stepLength;
    if (tmpOffset < distance) {
      ele.style[attr] = from + tmpOffset * sign + 'px';
      offset = tmpOffset;
    } else {
      ele.style[attr] = to + 'px';
      clearInterval(intervalID);
    }
  }
  ele.style[attr] = from + 'px';
  var intervalID = setInterval(step, 10);
}
上一篇:類型識(shí)別下一篇:BOM