## requestAnimationFrame
`requestAnimationFrame`是瀏覽器用于定時循環(huán)操作的一個接口,類似于setTimeout,主要用途是按幀對網(wǎng)頁進(jìn)行重繪。
可以使用`requestAnimationFrame()`來制作動畫。
> 如果你想做逐幀動畫的時候,你應(yīng)該用這個方法。這就要求你的動畫函數(shù)執(zhí)行會先于瀏覽器重繪動作。通常來說,被調(diào)用的頻率是每秒60次,但是一般會遵循W3C標(biāo)準(zhǔn)規(guī)定的頻率。如果是后臺標(biāo)簽頁面,重繪頻率則會大大降低。
> 回調(diào)函數(shù)只會被傳入一個DOMHighResTimeStamp參數(shù),這個參數(shù)指示當(dāng)前被 requestAnimationFrame 序列化的函數(shù)隊列被觸發(fā)的時間。因為很多個函數(shù)在這一幀被執(zhí)行,所以每個函數(shù)都將被傳入一個相同的時間戳,盡管經(jīng)過了之前很多的計算工作。這個數(shù)值是一個小數(shù),單位毫秒,精確度在 10 μs。
`requestAnimationFrame()`函數(shù)是全局函數(shù)。
考慮兼容,如下:
```
var requestAnimFrame = function() {
return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(a) {window.setTimeout(a, 1e3 / 60, (new Date).getTime())};
}();
```
使用方法:
```
function step(){
requestAnimationFrame(step);
}
```
requestAnimationFrame()方法會返回一個requestID,是一個長整型非零值,作為一個唯一的標(biāo)識符,可將該值作為參數(shù)傳遞給window.cancelAnimationFrame()來取消這個函數(shù)。
```
cancelAnimationFrame(requestID);
```
兼容性代碼:
```
var cancelAnimFrame = function() {
return window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || function(id) { clearTimeout(id); };
}();
```
- 前言
- JavaScript簡介
- 基本概念
- 語法
- 數(shù)據(jù)類型
- 運算符
- 表達(dá)式
- 語句
- 對象
- 數(shù)組
- 函數(shù)
- 引用類型(對象)
- Object對象
- Array對象
- Date對象
- RegExp對象
- 基本包裝類型(Boolean、Number、String)
- 單體內(nèi)置對象(Global、Math)
- console對象
- DOM
- DOM-屬性和CSS
- BOM
- Event 事件
- 正則表達(dá)式
- JSON
- AJAX
- 表單和富文本編輯器
- 表單
- 富文本編輯器
- canvas
- 離線應(yīng)用
- 客戶端存儲(Cookie、Storage、IndexedDB)
- HTML5 API
- Video/Audio
- Geolocation API
- requestAnimationFrame
- File API
- FullScreen API
- IndexedDB
- 檢測設(shè)備方向
- Blob
- vibrate
- Luminosity API
- WebRTC
- Page Visibility API
- Performance API
- Web Speech
- Notification
- 面向?qū)ο蟮某绦蛟O(shè)計
- 概述
- this關(guān)鍵字
- 原型鏈
- 作用域
- 常用API合集
- SVG
- 錯誤處理機(jī)制
- JavaScript開發(fā)技巧合集
- 編程風(fēng)格
- 垃圾回收機(jī)制
