最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

window.requestAnimationFrame是什么意思,怎么用

 更新時間:2013年01月13日 13:54:08   作者:  
window.requestAnimationFrame 告訴瀏覽器您要執(zhí)行的動畫并且請求瀏覽器的在下一個動畫幀重繪窗口,方法在瀏覽器重繪之前作為一個回調(diào)函數(shù)被調(diào)用,就是告訴瀏覽器在刷新屏幕的時候,調(diào)用這個方法
再看別人實現(xiàn)粒子效果的時候會有以下代碼
復制代碼 代碼如下:

window.requestAnimationFrame || (window.requestAnimationFrame = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame
|| window.oRequestAnimationFrame || window.msRequestAnimationFrame ||
function(callback, element) {
return window.setTimeout(function() {
return callback(+new Date());
}, 1000 / 60)
});

這個到底是什么意思,它又是怎么用的呢?
window.requestAnimationFrame 告訴瀏覽器您要執(zhí)行的動畫并且請求瀏覽器的在下一個動畫幀重繪窗口。該方法在瀏覽器重繪之前作為一個回調(diào)函數(shù)被調(diào)用。
就是告訴瀏覽器在刷新屏幕的時候,調(diào)用這個方法。

window.requestAnimationFrame的前世今生
在90年代,那個互聯(lián)網(wǎng)做廣告的年代,window上面各種走馬燈,各種狀態(tài)文字都是用setTimeout來時實現(xiàn)的,如下:
復制代碼 代碼如下:

(function(){
function update(){
setTimeout(update,1000)
}
setTimeout(update,1000)
})();
(function(){
function update(){
//
}
setInterval(update,1000)
})();

動畫的問題最棘手的是延時問題,對于顯示器來說,每一秒60幀頻,如果我們按照瀏覽器的刷新速率來控制我們的動畫時間的話會有很好的效果,即17ms,setTimeout(callback,1000/60),但是:
1.各個瀏覽器及時精度是不一樣的。
2.對于setTimeout 和setInterval 實現(xiàn)機制并不是我們需要的那樣,當經(jīng)過特定的時間后,瀏覽器會將那部分代碼加入到UI的繪制隊列當中,如果這個時候UI線程很忙,有其它的任務阻塞,動畫的下一幀就不會按時執(zhí)行。經(jīng)過長時間的累計堆加之后,可能我們偏離原來的時間點誤差越來越大。

Mozilla 的 Robert O'Callahan 在思考這個問題,并想出了一個獨特的方案。他指出CSS transitions 和 animations的優(yōu)勢在于瀏覽器知道哪些動畫將會發(fā)生,所以得到正確的間隔來刷新UI。而javascript動畫,瀏覽器不知道動畫正在發(fā)生。他的解決方案是創(chuàng)建一個mozRequestAnimationFrame()方法來告訴瀏覽器哪些javascript代碼正在執(zhí)行,這使得瀏覽在執(zhí)行一些代碼后得到優(yōu)化。

mozRequestAnimationFrame()方法接受一個參數(shù),是一個屏幕重繪前被調(diào)用的函數(shù)。這個函數(shù)用來對生成下合適的dom樣式的改變,這些改變用在下一次重繪中。你可以像調(diào)用setTimeout()一樣的方式鏈式調(diào)用mozRequestAnimationFrame()。
這個就是window.requestAnimationFrame的由來。

在Mozilla官網(wǎng)看到如下
Because this technology's specification has not stabilized, check the compatibility table for the proper prefixes to use in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future version of browsers as the spec changes.
由于這項技術的規(guī)范還沒有穩(wěn)定,正確的前綴使用在各種瀏覽器的兼容性表。還要注意的是語法和行為的實驗技術是如有改變,在未來版本的瀏覽器的規(guī)格變化。

目前在Android系統(tǒng)下是不支持的,動畫只能setTimeout咯。

相關文章

  • js獲取瀏覽器基本信息大全

    js獲取瀏覽器基本信息大全

    本文整理匯總了js獲取瀏覽器基本信息資料,非常的全面,也對IE及非IE瀏覽器之間的區(qū)別進行了分析,是篇非常不錯的文章,這里推薦給大家,前端設計師們千萬不要錯過
    2014-11-11
  • 簡單介紹JavaScript的變量和數(shù)據(jù)類型

    簡單介紹JavaScript的變量和數(shù)據(jù)類型

    這篇文章主要介紹了簡單介紹JavaScript的變量和數(shù)據(jù)類型,是JS入門中的基礎知識,需要的朋友可以參考下
    2015-06-06
  • JavaScript的學習入門整理篇

    JavaScript的學習入門整理篇

    每次剛開始學語言時,作者都喜歡用“hello world”例子l來侮辱我們的智商,我想大家都不是笨蛋,故而寥寥數(shù)筆寫了一點
    2008-09-09
  • URI、URL和URN之間的區(qū)別與聯(lián)系

    URI、URL和URN之間的區(qū)別與聯(lián)系

    URI、URL和URN之間的區(qū)別與聯(lián)系...
    2006-12-12
  • js轉(zhuǎn)義字符介紹

    js轉(zhuǎn)義字符介紹

    有時候js得到json串中含有"<"和">" ,那么兩個尖括號中間的文字是無法在html頁面顯示出來的,必須用轉(zhuǎn)義字符
    2013-11-11
  • JavaScript中的Math.E屬性使用詳解

    JavaScript中的Math.E屬性使用詳解

    這篇文章主要介紹了JavaScript中的Math.E屬性使用詳解,是JS入門學習中的基礎知識,需要的朋友可以參考下
    2015-06-06
  • JavaScript初級教程(第三課)

    JavaScript初級教程(第三課)

    JavaScript初級教程(第三課)...
    2007-04-04
  • Three.js源碼閱讀筆記(光照部分)

    Three.js源碼閱讀筆記(光照部分)

    好久沒看Three.js源碼了。今天天氣不錯,接著看;這次從光照部分看起:光照模型,從光線本身角度來看包括環(huán)境光、平行光、點光源,從物體表面材質(zhì)角度看又包括漫反射和鏡面反射,需要了解的朋友可以參考下
    2012-12-12
  • JavaScript 學習筆記二 字符串拼接

    JavaScript 學習筆記二 字符串拼接

    JavaScript 字符串拼接的一些知識點分析,對于提高效率等,都是非常值得一看的。
    2010-03-03
  • js設計模式中單例模式的簡要說明

    js設計模式中單例模式的簡要說明

    這篇文章主要為大家介紹了js設計模式中單例模式的簡要說明,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01

最新評論

兴安县| 龙南县| 托里县| 穆棱市| 如东县| 灵璧县| 肇州县| 定襄县| 和林格尔县| 申扎县| 吴川市| 东辽县| 桂林市| 故城县| 叶城县| 基隆市| 阳朔县| 昂仁县| 来安县| 永年县| 即墨市| 宜宾县| 乡宁县| 高碑店市| 白朗县| 天柱县| 山丹县| 宁津县| 浦县| 阳春市| 罗定市| 泸州市| 商水县| 日照市| 朝阳市| 阳泉市| 墨竹工卡县| 芮城县| 丘北县| 枣阳市| 青河县|