Web面接でよくある質問:リフローとリペイントの原理と違い

Web面接でよくある質問:リフローとリペイントの原理と違い

ブラウザのレンダリングメカニズム

1. ブラウザはページを処理するために2つのエンジンを使用し、ブラウザによってレンダリングエンジンは異なります。

レンダリングエンジン:

ChromとSafariは「WebKit」を使用します。

Firefor 「Geoko」を使用します

jsエンジン

2. ブラウザはHTMLを解析してDOMツリー、CSSを解析してCSSOM (CSS オブジェクト モデル);

3. 次にDOMツリーとCSSOMを組み合わせてレンダリングツリー(レンダリングツリー);

4. レンダリングツリーが完成すると、ブラウザはレンダリングツリーに従ってレイアウトします。レイアウトが完了すると、「ボックスモデル」が出力され、ビュー内の各ノードの位置とサイズを正確にキャプチャし、すべての測定値を画面上の物理的なピクセル値に変換します。(このステップにより、回流(reflow)が発生します)

5. レイアウトが完了すると、ブラウザはすぐにペイントスタンプイベントを発行し、レンダリングツリーを画面ピクセルに変換します。(このステップにより重繪(repaint)が行われます)

6.上記の手順を実行すると、ページが画面に表示されます。

ここに画像の説明を挿入

リフローは必然的に再描画を引き起こしますが、再描画は必ずしもリフローを引き起こすわけではありません。

リフローと再塗装

リフロー

コンセプト:

要素の構造、サイズ、レイアウトなどの変更によりレンダリング ツリーの一部またはすべてが変更されると、ブラウザーは DOM の一部またはすべてを再レンダリングします。

要素ノードの位置と距離が変更されたことを強調します。

逆流を引き起こす行為:

  • ブラウザウィンドウのサイズが変わる
  • コンテンツの変更
  • ノードを追加または削除する
  • CSS疑似クラスを有効にする
  • 等…

再描画

コンセプト:

ページ要素のスタイルがドキュメント フロー内の位置に影響を与えずに変更された場合、ブラウザーは単に新しいスタイルを要素に割り当てて再描画します。

要素ノードのスタイルを強調します。たとえば、色、境界線の実線が破線になります (位置と距離は変更されません)。

再描画を引き起こす操作:

  • 背景色のプロパティ値が変更された場合
  • border-colorプロパティの値が変更された場合
  • 可視性属性値が変更された場合
  • 等…

ここに画像の説明を挿入

以上がWeb面接でよく聞かれるリフローとリペイントの原理と違いについての詳しい内容です。Web面接でのリフローとリペイントについてさらに詳しく知りたい方は、123WORDPRESS.COM内の他の関連記事もぜひご注目ください!

以下もご興味があるかもしれません:
  • ブラウザのリフローと再描画を減らす方法
  • JavaScript における Repaint と Reflow の使用方法の詳細な説明
  • JavaScript パフォーマンスの最適化 (再描画とリフロー)
  • 高性能な WEB 開発ページのレンダリング、再描画、リフロー。

<<:  Linux で libudev を使用して USB デバイスの VID と PID を取得する方法

>>:  Navicat 経由で MySQL にリモート接続する方法

推薦する

VS2022 リモート デバッグ ツールの使い方

WeChat 関連サービスをデバッグする場合など、職場のサーバー環境でリモートデバッグを行う必要があ...

Windows環境でのMySQL 8.0.13無料インストールバージョンの設定チュートリアル

目次圧縮ファイルをダウンロードするアドレス: https://dev.mysql.com/downl...

MySQL 永続統計の詳細な説明

1. 永続的な統計情報の重要性:統計は、MySQL が実行プランを生成するためのガイドとして使用され...

docker を使用してコード サーバーをデプロイする方法

画像をプルする # docker pull codercom/code-server # Docke...

跳ねるボールを実現するネイティブjs

思いつきで、小さなボールが跳ね返るケーススタディを書いてみました。具体的な内容は以下のとおりです。主...

MySQLのMVCCマルチバージョン同時実行制御の実装

1 MVCCとは何かMVCC の正式名称は、マルチバージョン同時実行制御です。データベースへの同時ア...

MySQL MGR の利点は何ですか?

MGR (MySQL グループ レプリケーション) は、バージョン 5.7 で追加された新しい機能...

Linux 型バージョン メモリ ディスク クエリ コマンド紹介

1. まず、Linux システムのバージョン内容について概要を説明します。 1. カーネルバージョン...

JavaScript プロトタイプチェーンを理解するための 2 つの図

目次1. プロトタイプの関係2. プロトタイプチェーン3. 結論序文:前回の記事では、JavaScr...

JavaScript setinterval 1秒遅延ソリューション

setinterval を使用すると、ページを開いた直後に 1 秒の遅延後に実行されることがわかりま...

Vueドロップダウンリストの2つの実装方法の比較

Vueドロップダウンリストの2つの実装最初の方法はv-forを使用する <el-select ...

ウェブデザインの経験とスキルの概要

■ ウェブサイトのテーマ計画 ウェブサイトのテーマが断片化しすぎないように注意してください。一般的に...

JavaScript操作要素は、ページコンテンツのスタイルを変更する方法を教えます

目次1. 操作要素1.1. 要素コンテンツの変更1.2. innerText と innerHtml...

HTML+CSS+JSはナビゲーションバーのスクロールグラデーション効果を実現します

目次まず効果を見てみましょう:成し遂げる:要約:まず効果を見てみましょう: 成し遂げる: 1. ナビ...

MySQL でインデックスとして B+Tree を使用する利点は何ですか?

目次データベースにインデックスが必要なのはなぜですか?インデックスが B+Tree データ構造を使用...