リフローと再描画の詳細な説明: 違いとアプリケーション シナリオ、特定のコード例が必要です
前書き:
フロントエンド開発、リフロー(リフロー)、リペイントは共通の概念です。これらはページのレンダリングと密接に関連しており、パフォーマンスの最適化に非常に重要です。この記事では、リフローと再描画の違いとその適用シナリオについて詳しく説明し、具体的なコード例を示します。
1. リフローとは何ですか?
リフローとは、ブラウザが変更された要素を再計算して描画するプロセスを指します。要素のスタイルを変更すると (幅、高さ、位置の変更など)、ブラウザは要素とそのサブ要素の幾何学的プロパティを再計算し、ページを再レンダリングします。このプロセスは比較的パフォーマンスに負荷がかかります。
リフローでは他の要素の計算とレイアウトが発生するため、オーバーヘッドは再描画よりもはるかに大きくなります。多くの場合、ページのパフォーマンスを向上させるために、頻繁なリフローを避ける必要があります。
2.リペイントとは何ですか?
再描画とは、要素のスタイル情報に基づいてブラウザがページを再描画することを指しますが、要素の幾何学的プロパティは変更されません。要素の色、背景、および幾何学的プロパティとは関係のないその他のスタイルのみを変更する場合、ブラウザはリフローせずに再描画操作のみを実行します。
再描画のコストは、表示されている部分のみを再描画するだけで済み、他の要素のレイアウトに影響を与えないため、少なくなります。ただし、再描画が多すぎると、パフォーマンスに一定の影響が生じます。
3. リフローと再描画の違い
リフローと再描画の最大の違いは、パフォーマンスのオーバーヘッドと影響範囲です。
リフローはコストがかかります。リフローにより、ブラウザは要素を再計算してレンダリングします。影響範囲は通常、ページ全体またはページの一部です。リフロー操作が頻繁にトリガーされると、ページのレンダリング パフォーマンスが低下したり、ページがフリーズしたりすることがあります。
再描画のコストはわずかです。再描画では、スタイルが変更された要素のみが再描画され、ページの再計算やレイアウトは発生しません。したがって、再描画のオーバーヘッドは比較的小さく、ページのパフォーマンスへの影響は小さくなります。
4. リフローと再描画のアプリケーション シナリオ
- リフロー操作を減らす: 開発中は、リフロー操作を頻繁にトリガーしないようにする必要があります。次の点でリフローの発生を減らすことができます:
- position 属性を使用して、要素の位置を変更する上/左やその他の操作を置き換えます。代わりに、transform を使用できます。要素を移動するには、translate() を使用します。transform 属性は再描画のみをトリガーしますが、リフローはトリガーしません。
- スタイル属性をループ内で操作しないでください。スタイルのバッチ変更を使用すると、リフローの回数を減らすことができます。
- ページの読み込み時に要素のレイアウト情報を取得しないようにするには、非同期メソッドを使用してレイアウト情報を取得します。
具体的なコード例:
// 错误示例,频繁触发回流 for (let i = 0; i < 100; i++) { element.style.width = '200px'; element.style.height = '200px'; element.style.left = i * 10 + 'px'; } // 正确示例,减少回流 element.style.position = 'absolute'; for (let i = 0; i < 100; i++) { element.style.transform = 'translateX(' + i * 10 + 'px)'; }
- 再描画操作の合理的な使用: スタイルのみが変更される場合には、再描画を使用してパフォーマンスを最適化できます。
具体的なコード例:
// 错误示例,频繁触发回流 for (let i = 0; i < 100; i++) { element.style.backgroundColor = 'red'; } // 正确示例,只触发重绘 for (let i = 0; i < 100; i++) { element.style.color = 'red'; }
概要:
リフローと再描画はフロントエンド開発における一般的な概念であり、ページのパフォーマンスの最適化に不可欠です。リフローのオーバーヘッドは大きくなり、再描画のオーバーヘッドは小さくなります。開発中は、リフロー操作を頻繁にトリガーすることを避け、再描画操作を合理的に使用してパフォーマンスのオーバーヘッドを軽減するように努める必要があります。以上、リフローと再描画の違いと適用シナリオについて詳しく解説しましたので、皆様のフロントエンド開発の一助になれば幸いです。
参考:
- [リフローが遅い理由](https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts -and-layout-thrashing)
以上がリフローとリドローの類似点、相違点、および適用可能な分野を調査します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この投稿では、Blackle Moriは、CohostのHTMLサポートの限界を押し広げようとしている間に見つかったハックのいくつかを示します。あえてこれらを使用してください、あなたもCSS犯罪者とラベル付けされないようにしてください。

CSSを備えたカスタムカーソルは素晴らしいですが、JavaScriptを使用して次のレベルに物事を引き出すことができます。 JavaScriptを使用して、カーソル状態間で移行し、カーソル内に動的テキストを配置し、複雑なアニメーションを適用し、フィルターを適用できます。

2025年には、互いに互いに跳ね返る要素を伴うインタラクティブなCSSアニメーションは、CSSにPongを実装する必要はありませんが、CSSの柔軟性とパワーの増加はLee&#039;の疑いを補強します。

CSSバックドロップフィルタープロパティを使用してユーザーインターフェイスをスタイルするためのヒントとコツ。バックドロップフィルターを複数の要素間でレイヤー化する方法を学び、それらを他のCSSグラフィカル効果と統合して、精巧なデザインを作成します。

まあ、SVG&#039;の組み込みのアニメーション機能は、計画どおりに非推奨されることはありませんでした。確かに、CSSとJavaScriptは負荷を運ぶことができる以上のものですが、以前のようにSmilが水中で死んでいないことを知っておくのは良いことです

イェーイ、テキストワラップのジャンプを見てみましょう:サファリテクノロジーのプレビューにかなり着陸してください!しかし、それがChromiumブラウザーでの仕組みとは異なることに注意してください。

このCSS-Tricksアップデートは、アルマナック、最近のポッドキャスト出演、新しいCSSカウンターガイド、および貴重なコンテンツを提供するいくつかの新しい著者の追加の大幅な進歩を強調しています。

ほとんどの場合、人々はTailwind&#039;の@Apply機能を紹介します。このように展示されたとき、@Applyはまったく有望な音をしません。だからobvio


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1
使いやすく無料のコードエディター

ホットトピック









