requestAnimatonFrame??
5098 ワード
概要
developer google comにおいて、
画面が視覚的に変化した場合、=>開発者はブラウザの正しい時間(フレームの開始時)に操作を実行したいと考えています.
JSがフレーム起動時に実行される唯一の方法=requestAnimationFrame
なぜsettimeout、setIntervalを使用できないのですか?
コールバックは、フレーム内のある時点(終了時)で実行され、フレームが失われ、つまずき現象が発生することが多い.
ex)最適化されたフレームレートでデバイスを実行しない問題、フレームダウンの問題、tabがアクティブなtabではないか、またはアニメーションがこのフレームから離れても実行を継続する問題.
간단한 DOM 애니메이션
CSSアニメーションによる作成日本窓requestAnimationFrameを使用するべきですか?
ブラウザが再び表示される前に、アニメーションを実行する環境を考慮することなく、指定したコードブロックを=>適切なフレームレートで実行します.
window.requestAnimationFrame()
:実行するアニメーションをブラウザに知らせ、次の再描画前にアニメーションを更新する関数を呼び出します.使用方法
window.requestAnimationFrame(callback);
Browser Rendering Process
現在のユーザー操作に関連するコンテンツ表示の優先度を指定します.
高速Web環境を提供するには、ブラウザが多くのタスクを実行する必要があります.
連続ループ上で動作し、理想速度は60フレーム
ブラウザがページをレンダリングするには、まずDOMツリーとCSSOMツリーを作成する必要があります.
DOM (Document Object Model) :
CSSOM (CSS Object Model) :
Reflow:レイアウトステップ=>表示するノードとそのスタイルを計算し、アプライアンスのビューポートでノードの正確な位置とサイズを計算します.
paint:Raster画=>レンダリングツリーの各ノードを画面上の実際のピクセルに変換する最後のステップ
ドキュメントのサイズ、適用されるスタイル、およびアプライアンスによっては、レンダリングツリーの作成、レイアウト、および塗りつぶしに要する時間が異なる場合があります.
ex)ドキュメントが大きいほど、ブラウザが実行するタスクが多くなり、スタイルが複雑になるほど、シェーディングに要する時間が多くなります.
requestFrameのデフォルトの使い方
≪パラメータ・タイムスタンプ|Parameter Timestamp|emdw≫:requestAnimationFrameの実行を開始した後の時間を示すタイムスタンプを提供します.
let startTime = null, currentTime = null;
function draw(timestamp) {
if(!startTime){
startTime = timestamp;
}
currentTime = timestamp - startTime;
requestAnimationFrame(draw);
}
draw();
Reference
mdn requestAnimationFrame
developers google web dev
Reference
この問題について(requestAnimatonFrame??), 我々は、より多くの情報をここで見つけました https://velog.io/@39ghwjd/requestAnimatonFrameテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol