window.requestAnimationFrame()
告訴浏覽器——你希望執行一個動畫,并且要求浏覽器在下次重繪之前調用指定的回調函數更新動畫。該方法需要傳入一個回調函數作為參數,該回調函數會在浏覽器下一次重繪之前執行
注意:若你想在浏覽器下次重繪之前繼續更新下一幀動畫,那麼回調函數自身必須再次調用
window.requestAnimationFrame()
當你準備更新動畫時你應該調用此方法。這将使浏覽器在下一次重繪之前調用你傳入給該方法的動畫函數(即你的回調函數)。回調函數執行次數通常是每秒60次,但在大多數遵循W3C建議的浏覽器中,回調函數執行次數通常與浏覽器螢幕重新整理次數相比對。為了提高性能和電池壽命,是以在大多數浏覽器裡,當
requestAnimationFrame()
運作在背景标簽頁或者隐藏的
<iframe>
裡時,
requestAnimationFrame()
會被暫停調用以提升性能和電池壽命。
回調函數會被傳入
DOMHighResTimeStamp
參數,
DOMHighResTimeStamp
訓示目前被
requestAnimationFrame()
排序的回調函數被觸發的時間。在同一個幀中的多個回調函數,它們每一個都會接受到一個相同的時間戳,即使在計算上一個回調函數的工作負載期間已經消耗了一些時間。該時間戳是一個十進制數,機關毫秒,最小精度為1ms(1000μs)。
請確定總是使用第一個參數(或其它獲得目前時間的方法)計算每次調用之間的時間間隔,否則動畫在高重新整理率的螢幕中會運作得更快。請參考下面例子的做法。
文法
window.requestAnimationFrame(callback);