CSS リフローと再描画がパフォーマンスに及ぼす影響を理解するには、具体的なコード例が必要です。
CSS リフローと再描画は、Web ページのパフォーマンスの最適化において非常に重要な概念です。 CSS はページのリフローと再描画を減らし、ページのレンダリング速度を向上させることができます。この記事では、CSS のリフローと再描画の概念とパフォーマンスへの影響を回避する方法を紹介し、具体的なコード例を示します。
1. リフローとリドローとは何ですか?
リフローとは、DOM 要素のサイズ、位置、または特定の属性が変更されると、ブラウザが要素の幾何学的属性を再計算することを意味します。この要素の変更により、他の要素の位置が変更される可能性があります。変更、このプロセスはリフローと呼ばれます。
再ペイントとは、幾何学的プロパティに影響を与えることなく DOM 要素のスタイルが変更されると、ブラウザーが要素を再描画することを意味します。このプロセスは再ペイントと呼ばれます。
2. リフローと再描画の影響
リフローと再描画は、パフォーマンスを非常に消費する操作です。ページ内の要素が頻繁にリフローおよび再描画されると、ページのレンダリング速度が低下し、ページのパフォーマンスも低下します。したがって、リフローと再描画の理由を理解し、不必要なリフローと再描画の操作を回避することで、ページのパフォーマンスを向上させることができます。
3. リフローと再描画を回避する方法
要素のスタイルを設定するときは、クラスを使用するようにしてください。クラスの変更は再描画のみをトリガーし、リフローはトリガーしないためです。
サンプル コード:
CSS:
.red { color: red; }
JavaScript:
const element = document.getElementById('element'); element.classList.add('red');
複数回 要素のスタイルを 1 回変更すると、複数回のリフローと再描画が行われます。複数のスタイルを変更する必要がある場合は、クラスを追加することでそれらをすべて一度に変更できます。
サンプルコード:
CSS:
.red { color: red; background-color: yellow; }
JavaScript:
const element = document.getElementById('element'); element.classList.add('red');
コード内DOM クエリを頻繁に使用すると、リフローが発生します。 DOM 要素の属性を複数回クエリする必要がある場合は、それを変数にキャッシュして、リフロー操作の繰り返しを避けることができます。
サンプルコード:
JavaScript:
const element = document.getElementById('element'); const width = element.offsetWidth; const height = element.offsetHeight;
DOMノードを頻繁に操作する必要がある場合、 DocumentFragment をバッチ処理に使用して、複数のリフローと再描画を回避できます。
サンプルコード:
JavaScript:
const fragment = document.createDocumentFragment(); for (let i = 0; i < 1000; i++) { const div = document.createElement('div'); fragment.appendChild(div); } document.body.appendChild(fragment);
4. まとめ
リフローと再描画は、適切な CSS コードの記述と、最適化により、リフローと再描画の回数が減り、ページのレンダリング速度が向上します。開発プロセス中は、頻繁な DOM 操作を避けること、スタイル属性の代わりにクラスを使用すること、DOM ノードのレイアウト情報をキャッシュすることなどに注意する必要があります。上記の対策により、ページのパフォーマンスを効果的に向上させ、ユーザー エクスペリエンスを向上させることができます。
以上がCSS リフローと再描画がパフォーマンスに及ぼす影響を分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。