リフローのコストは比較的小さいのに対し、リフローのコストは大きいため、リフローを減らすことをお勧めします。 1. 要素の外観スタイルが変更されると、ブラウザはこれらの要素を再描画しますが、レイアウトは変更されません; 2. 要素のレイアウト属性が変更されると、ブラウザは要素の幾何学的属性を再計算し、ページ全体のレイアウトを再構築します。
# このチュートリアルのオペレーティング システム: Windows 10 システム、Dell G3 コンピューター。
リフロー、再ペイント、レイアウトは Web ページのレンダリング プロセスの異なるステップであり、Web サイトのパフォーマンスにさまざまな影響を与えます。
再描画: 要素の外観スタイル (色、背景など) が変更されると、ブラウザはこれらの要素を再描画しますが、レイアウトは変更されません。再描画によるパフォーマンスのオーバーヘッドは比較的小さく、ページ レイアウトの変更は発生しません。
リフロー: 要素のレイアウト プロパティ (位置、サイズなど) が変更されると、ブラウザは要素の幾何学的プロパティを再計算し、ページ全体のレイアウトを再構築します。リフローには大きなパフォーマンスのオーバーヘッドがあり、ページが再配置され、他の要素も影響を受ける可能性があります。
したがって、再描画のオーバーヘッドは比較的小さいですが、リフローのオーバーヘッドは大きくなります。一般に、リフローを減らすことは、ページのパフォーマンスに大きな影響を与えるため、より良いオプションです。
リフローを減らす方法は次のとおりです:
CSS3 アニメーションを使用する: CSS3 アニメーションは GPU アクセラレーションを使用するため、リフローの数を減らすことができます。
バッチ変更スタイル: 単一要素のスタイルを頻繁に変更することは避け、代わりに複数の変更をグループ化してリフローの回数を減らします。
仮想ドキュメント フラグメントの使用 (ドキュメント フラグメント): 仮想ドキュメント フラグメントを作成することで、メモリ内で DOM 操作を実行し、最後にドキュメント フラグメントを一度にページに追加して、リフローの回数を減らします。 。
CSS3 トランジションまたはトランスフォームを使用する: これらのプロパティは GPU アクセラレーションを活用し、リフローの数を減らすことができます。
レイアウトの強制同期を回避します。offsetTop、offsetLeft など、リフローをトリガーする一部のプロパティまたはメソッドの使用を回避します。
特定の状況に応じて、適切な最適化戦略を選択する必要があります。単純なスタイルの変更のみの場合、再描画のコストは小さい可能性がありますが、複雑なレイアウトの変更が含まれる場合は、リフローの回数を減らすことに注意する必要があります。
以上がリフローとリドローとリフローではどちらが優れていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。