検索
ホームページウェブフロントエンドhtmlチュートリアルブラウザのレンダリング処理の詳細説明

ブラウザのメインコンポーネントの構造

ブラウザのレンダリング処理の詳細説明

(ブラウザのメインコンポーネント)

レンダリングエンジン - Webkit と Gecko

Firefox は、Mozilla が独自に開発したレンダリング エンジン Geoko を使用します。

Safari と Chrome は両方とも Webkit を使用します。 Webkit は、もともと Linux プラットフォーム用に開発され、後に Apple によって Mac および Windows に移植されたオープン ソース レンダリング エンジンです。

この記事では、主に Webkit レンダリング エンジンについて説明します。Webkit と Gecko で使用される用語は若干異なりますが、主なプロセスは基本的に同じです。

ブラウザのレンダリング処理の詳細説明

(Webkit レンダリング エンジン プロセス)

クリティカル レンダリング パス

クリティカル レンダリング パスとは、ブラウザが最初のリクエストから HTML、CSS、

javascript およびその他のリソースを受け取り、解析してツリーを構築することを指します。レンダリング レイアウト。顧客が見ることができるインターフェイスを描画し、最終的に提示するプロセス全体。

そのため、ブラウザのレンダリング プロセスには主に次の手順が含まれます:

HTML を解析して DOM ツリーを生成します。

CSS を解析して CSSOM ルール ツリーを生成します。

DOM ツリーと CSSOM ルール ツリーをマージして、レンダリング ツリーを生成します。

レンダリング ツリーをトラバースしてレイアウトを開始し、各ノードの位置とサイズ情報を計算します。

レンダリング ツリーの各ノードを画面に描画します。

DOM ツリーの構築

ブラウザーがサーバー応答から

HTML ドキュメントを受信すると、ドキュメント ノードを走査して DOM ツリーを生成します。

CSSやJSの読み込み実行によりDOMツリーの生成処理がブロックされる可能性があることに注意してください。レンダリングのブロックの問題については以下で説明します。


CSSOM ルール ツリーを構築する

ブラウザは CSS ファイルを解析して CSS ルール ツリーを生成し、各 CSS ファイルは StyleSheet オブジェクトに分析され、各オブジェクトには CSS ルールが含まれます。 CSS ルール オブジェクトには、CSS 構文およびその他のオブジェクトに対応するセレクター オブジェクトと宣言オブジェクトが含まれています。

レンダリング ブロック

ブラウザーがスクリプト タグを検出すると、DOM の構築はスクリプトの実行が完了するまで一時停止され、その後 DOM の構築が続行されます。 JavaScript スクリプトを実行するたびに、DOM ツリーの構築が大幅にブロックされます。JavaScript スクリプトが CSSOM も操作し、CSSOM がダウンロードおよび構築されていない場合、ブラウザはスクリプトの実行と構築をさらに遅延させます。 CSSOM のダウンロードが完了するまで DOM を保存し、ビルドします。

つまり、script タグの位置は非常に重要です。実際の使用では、次の 2 つの原則に従うことができます:

CSS の優先順位: 導入の順序では、CSS リソースが JavaScript リソースよりも優先されます。

JS 後: 通常、JS コードをページの下部に配置します。JavaScript は DOM の構築にできるだけ影響を与えないようにする必要があります。

HTMLを解析すると、新しい要素がDOMツリーに挿入され、同時にCSSが検索され、対応するスタイルルールが要素に順番に適用されます。右から左へ。

例: div p {font-size: 16px} の場合、最初にすべての p タグを検索し、その親タグが div であるかどうかを判断してから、このスタイルをレンダリングに使用するかどうかを決定します。

そのため、通常 CSS を記述するときは、ID とクラスを使用するようにし、それらをオーバーレイすることはありません。

レンダリング ツリーを構築する

DOM ツリーと CSS ルール ツリーを通じてレンダリング ツリーを構築できます。ブラウザはまず、DOM ツリーのルート ノードから開始して、表示されている各ノードをたどります。表示されているノードごとに、該当する CSS スタイル ルールを見つけて適用します。

レンダリング ツリーが構築されると、各ノードは表示されるノードになり、そのコンテンツと対応するルールのスタイルが含まれます。これは、レンダリング ツリーと DOM ツリーの最大の違いでもあります。もちろん、表示にはレンダリング ツリーが使用されますが、このツリーにはこれらの目に見えない要素は表示されません。さらに、

displayが none に等しい要素はこのツリーに表示されませんが、visibilityが hidden に等しい要素はこのツリーに表示されます。

レンダリングツリーレイアウト

レイアウト フェーズは、レンダリング ツリーのルート ノードからトラバースを開始し、ページ上の各ノード オブジェクトの正確なサイズと位置を決定します。レイアウト フェーズの出力は、それぞれを正確にキャプチャする ボックス モデル です。画面上の要素の正確な位置とサイズ。

レンダリング ツリーの描画

描画フェーズでは、レンダリング ツリーが走査され、レンダラの Paint() メソッドが呼び出されて、その内容が画面に表示されます。レンダリング ツリーのレンダリング作業は、ブラウザの UI バックエンド コンポーネントによって完了します。

リフローと再ペイント:

レンダリング ツリー レイアウト、つまりページ内の各ノードのサイズや位置などの幾何学的情報に基づいて CSS スタイルを計算します。 HTML はデフォルトで流動的なレイアウトを持っています。CSS と js はこのレイアウトを壊し、DOM の外観、スタイル、サイズ、位置を変更します。現時点では、再配置とリフローという 2 つの重要な概念について言及する必要があります。

replaint: 画面の一部を再描画しても、全体のレイアウトには影響しません。たとえば、特定の CSS の背景色は変わりますが、要素の幾何学的サイズと位置は変わりません。
リフロー: コンポーネントの幾何学的サイズが変更されたことを意味し、レンダリング ツリーを再検証して計算する必要があります。レンダー ツリーの一部または全体が変更されました。これがリフロー、またはレイアウトです。

したがって、リフローと再配置をできるだけ減らすように努めるべきです。これが、テーブル レイアウトが現在ほとんど使用されない理由の 1 つだと思います。

display:none はリフローをトリガーします。visibility:hidden 属性は非表示属性ではありませんが、要素は依然として空のボックスにレンダリングされるため、visibility:hidden になります。位置の変更が発生していないため、再描画のみがトリガーされます。

場合によっては、要素のスタイルの変更など、ブラウザーはすぐにリフローまたは再描画を行わず、そのような操作のバッチを蓄積してからリフローを実行します。これは、非同期リフローまたは増分非同期リフローとも呼ばれます。 。
ウィンドウのサイズ変更、ページのデフォルトフォントの変更などの場合があります。これらの操作では、ブラウザはすぐにリフローします。

概要

この記事では、ブラウザーのレンダリング プロセスについて段階的に学習しました。ブラウザーのレンダリング プロセスについて質問がある場合は、フィードバックをお送りください。 、一緒に作業を進めます。

関連記事:

html 2 秒で他のページにジャンプ

Web ページ上に QQ 一時ダイアログ ボックスをポップアップする方法

境界線解除および境界線なし iframe の操作とは何ですか

ベースタグの使い方

以上がブラウザのレンダリング処理の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
HTML、CSS、およびJavaScript:例と実用的なアプリケーションHTML、CSS、およびJavaScript:例と実用的なアプリケーションMay 09, 2025 am 12:01 AM

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。1。HTMLは、Webページ構造の構築に使用されます。 2。CSSは、Webページの外観を美化するために使用されます。 3. JavaScriptは、動的な相互作用を実現するために使用されます。タグ、スタイル、スクリプトを通じて、これら3つは最新のWebページのコア関数を構築します。

Lang属性をタグにどのように設定しますか?なぜこれが重要なのですか?Lang属性をタグにどのように設定しますか?なぜこれが重要なのですか?May 08, 2025 am 12:03 AM

タグのLang属性を設定することは、WebアクセシビリティとSEOを最適化する重要なステップです。 1)ラング属性をタグに設定します。 2)多言語コンテンツでは、ようなさまざまな言語パーツのLang属性を設定します。 3)「EN」、「FR」、「ZH」などのISO639-1標準に準拠する言語コードを使用します。Lang属性を正しく設定すると、Webページと検索エンジンランキングのアクセシビリティが向上します。

HTML属性の目的は何ですか?HTML属性の目的は何ですか?May 07, 2025 am 12:01 AM

htmlattributeSareSientionalentionalentionalentionalentiallyance'functionalityandappearance.theyaddinformationtodefinebehavior、light、and interaction、makewebsitesteractive、responsive、andviseallyappaleal.attributeslikesrc、href、class、型、およびdoadabledransform

HTMLでリストを作成するにはどうすればよいですか?HTMLでリストを作成するにはどうすればよいですか?May 06, 2025 am 12:01 AM

toreatealistinhtml、useforunorderedlistsandfororderedlists:1)forunorderedlists、wrapitemsinanduseforeachitem、renderingasabulletedlist.2)

HTMLアクション:Webサイト構造の例HTMLアクション:Webサイト構造の例May 05, 2025 am 12:03 AM

HTMLは、明確な構造のWebサイトを構築するために使用されます。 1)Webサイト構造などのタグを使用し、定義します。 2)例は、ブログとeコマースのウェブサイトの構造を示しています。 3)誤ったラベルネスティングなどの一般的な間違いを避けてください。 4)HTTP要求を削減し、セマンティックタグを使用してパフォーマンスを最適化します。

HTMLページに画像を挿入するにはどうすればよいですか?HTMLページに画像を挿入するにはどうすればよいですか?May 04, 2025 am 12:02 AM

to inertanimageintoanhtmlpage、usethetagwithsrcandaltattributes.1)usealttextforaccessibilityandseo.2)emplencesrcsetForresponsiveimages.3)applylazyloadingwithloading = "lazy" tooptimizeperformance.4)

HTMLの目的:Webブラウザがコンテンツを表示できるようにするHTMLの目的:Webブラウザがコンテンツを表示できるようにするMay 03, 2025 am 12:03 AM

HTMLの中心的な目的は、ブラウザがWebコンテンツを理解して表示できるようにすることです。 1。HTMLは、タグなどのタグを介してWebページの構造とコンテンツを定義します。 3.HTMLは、ユーザーの相互作用をサポートするフォーム要素を提供します。 4. HTMLコードの最適化は、HTTP要求の削減やHTMLの圧縮など、Webページのパフォーマンスを改善できます。

Web開発にとってHTMLタグが重要なのはなぜですか?Web開発にとってHTMLタグが重要なのはなぜですか?May 02, 2025 am 12:03 AM

htmltagsareSterenceforwebdevelovementasyStheStructureanhandhancewebpages.1)theydefineLayout、semantics、and-interactivity.2)semanticagsimprovecessibility.3)opeusofusofagscanoptimizeperformanceandensurecross-brows-compativeation。

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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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

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

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

メモ帳++7.3.1

メモ帳++7.3.1

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

MantisBT

MantisBT

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境