検索
ホームページウェブフロントエンドCSSチュートリアルリフローとリドローの類似点、相違点、および適用可能な分野を調査します。

リフローとリドローの類似点、相違点、および適用可能な分野を調査します。

Jan 26, 2024 am 09:39 AM
アプリケーションシナリオリフロー再描画

リフローとリドローの類似点、相違点、および適用可能な分野を調査します。

リフローと再描画の詳細な説明: 違いとアプリケーション シナリオ、特定のコード例が必要です

前書き:

フロントエンド開発、リフロー(リフロー)、リペイントは共通の概念です。これらはページのレンダリングと密接に関連しており、パフォーマンスの最適化に非常に重要です。この記事では、リフローと再描画の違いとその適用シナリオについて詳しく説明し、具体的なコード例を示します。

1. リフローとは何ですか?

リフローとは、ブラウザが変更された要素を再計算して描画するプロセスを指します。要素のスタイルを変更すると (幅、高さ、位置の変更など)、ブラウザは要素とそのサブ要素の幾何学的プロパティを再計算し、ページを再レンダリングします。このプロセスは比較的パフォーマンスに負荷がかかります。

リフローでは他の要素の計算とレイアウトが発生するため、オーバーヘッドは再描画よりもはるかに大きくなります。多くの場合、ページのパフォーマンスを向上させるために、頻繁なリフローを避ける必要があります。

2.リペイントとは何ですか?

再描画とは、要素のスタイル情報に基づいてブラウザがページを再描画することを指しますが、要素の幾何学的プロパティは変更されません。要素の色、背景、および幾何学的プロパティとは関係のないその他のスタイルのみを変更する場合、ブラウザはリフローせずに再描画操作のみを実行します。

再描画のコストは、表示されている部分のみを再描画するだけで済み、他の要素のレイアウトに影響を与えないため、少なくなります。ただし、再描画が多すぎると、パフォーマンスに一定の影響が生じます。

3. リフローと再描画の違い

リフローと再描画の最大の違いは、パフォーマンスのオーバーヘッドと影響範囲です。

リフローはコストがかかります。リフローにより、ブラウザは要素を再計算してレンダリングします。影響範囲は通常、ページ全体またはページの一部です。リフロー操作が頻繁にトリガーされると、ページのレンダリング パフォーマンスが低下したり、ページがフリーズしたりすることがあります。

再描画のコストはわずかです。再描画では、スタイルが変更された要素のみが再描画され、ページの再計算やレイアウトは発生しません。したがって、再描画のオーバーヘッドは比較的小さく、ページのパフォーマンスへの影響は小さくなります。

4. リフローと再描画のアプリケーション シナリオ

  1. リフロー操作を減らす: 開発中は、リフロー操作を頻繁にトリガーしないようにする必要があります。次の点でリフローの発生を減らすことができます:
  • 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)';
}
  1. 再描画操作の合理的な使用: スタイルのみが変更される場合には、再描画を使用してパフォーマンスを最適化できます。

具体的なコード例:

// 错误示例,频繁触发回流
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 サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
cohost.orgの失われたCSSトリックcohost.orgの失われたCSSトリックApr 25, 2025 am 09:51 AM

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

カーソルの次のレベルCSSスタイリングカーソルの次のレベルCSSスタイリングApr 23, 2025 am 11:04 AM

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

Worlds Collide:スタイルクエリを使用したキーフレーム衝突検出Worlds Collide:スタイルクエリを使用したキーフレーム衝突検出Apr 23, 2025 am 10:42 AM

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

UI効果にCSSバックドロップフィルターを使用しますUI効果にCSSバックドロップフィルターを使用しますApr 23, 2025 am 10:20 AM

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

微笑んでいますか?微笑んでいますか?Apr 23, 2025 am 09:57 AM

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

「かわいい」は見る人の目にあります「かわいい」は見る人の目にありますApr 23, 2025 am 09:40 AM

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

CSS-Tricks XLIIIを記録しますCSS-Tricks XLIIIを記録しますApr 23, 2025 am 09:35 AM

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

Tailwind&#039;の@Apply機能は、響きよりも優れていますTailwind&#039;の@Apply機能は、響きよりも優れていますApr 23, 2025 am 09:23 AM

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

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

SecLists

SecLists

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

MantisBT

MantisBT

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

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター