検索
ホームページウェブフロントエンド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 までご連絡ください。
火狐浏览器是哪个国家的火狐浏览器是哪个国家的Sep 15, 2022 pm 02:55 PM

火狐浏览器是“美国”的。Firefox火狐浏览器是开源基金组织Mozilla研发的一个自由及开放源代码的网页浏览器;而Mozilla基金会成立于2003年7月,是一家美国公司,现位于美国加利福尼亚州的芒廷维尤。

教你如何强制卸载edge浏览器教你如何强制卸载edge浏览器Jul 15, 2023 pm 06:17 PM

Windows10自带的Edge浏览器在程序面板上是不能被卸载的,但是有些网友不喜欢使用edge浏览器,想要卸载掉它。那么我们可以尝试如何卸载edge浏览器呢?下面小编就教下大家强制卸载edge浏览器的方法。具体的方法如下:1、右击左下角开始,点击“windowspowershell(管理员)”打开。2、进入命令界面,输入代码get-appxpackage*edge*,查找edge包。3、在edge包中找到packagefullname,选中并复制。4、接着输入命令Remove-appxpack

电脑浏览器打不开网页但能上网怎么解决电脑浏览器打不开网页但能上网怎么解决Jun 28, 2023 am 11:26 AM

电脑浏览器打不开网页但能上网解决方法:1、网络设置问题,将路由器断电并等待几分钟,然后再重新插上电源;2、浏览器设置问题,清除浏览器缓存和浏览历史记录,确保浏览器没有设置代理服务器或虚拟专用网络;3、DNS设置问题,将DNS设置更改为公共DNS服务器地址;4、杀毒软件或防火墙问题,禁用杀毒软件或防火墙,再尝试打开网页;5、网页本身的问题,等待一段时间或联系网站管理员了解情况。

如何修复 Microsoft Edge 浏览器中的黑屏问题如何修复 Microsoft Edge 浏览器中的黑屏问题May 16, 2023 am 10:04 AM

微软于2020年初发布了基于Chromium(谷歌的开源引擎)的NewEdge版本。新Edge的感觉与谷歌Chrome相似,并且具有Chrome中可用的功能。但是,许多用户报告说他们在启动MicrosoftNewEdge后立即看到黑屏。用户可以访问设置菜单,但是当他们单击菜单中的任何选项时,它不起作用,只有黑屏可见。当计算机鼠标悬停在选项上并且用户可以关闭浏览器时,它会突出显示选项。在PC上打开新的Edge浏览器时是否遇到黑屏?那么这篇文章将对你有用。在这篇文章中,

Ubuntu Linux中如何删除Firefox Snap?Ubuntu Linux中如何删除Firefox Snap?Feb 21, 2024 pm 07:00 PM

要在UbuntuLinux中删除FirefoxSnap,可以按照以下步骤进行操作:打开终端并以管理员身份登录到Ubuntu系统。运行以下命令以卸载FirefoxSnap:sudosnapremovefirefox系统将提示你输入管理员密码。输入密码并按下Enter键以确认。等待命令执行完成。一旦完成,FirefoxSnap将被完全删除。请注意,这将删除通过Snap包管理器安装的Firefox版本。如果你通过其他方式(如APT包管理器)安装了另一个版本的Firefox,则不会受到影响。通过以上步骤

edge是什么浏览器edge是什么浏览器Jul 19, 2022 pm 12:41 PM

edge是由微软开发的基于Chromium开源项目及其他开源软件的网页浏览器。Edge浏览器主要特点是能够支持目前主流的Web技术,作为Windows10自带浏览器,给微软用户带来更好的功能体验。

苹果自带的浏览器叫什么苹果自带的浏览器叫什么Jul 18, 2022 am 10:42 AM

苹果自带的浏览器叫“Safari”;Safari是一款由苹果公司开发的网页浏览器,是各类苹果设备的默认浏览器,该浏览器使用的是WebKit浏览器引擎,包含WebCore排版引擎及JavaScriptCore解析引擎,在GPL条约下授权,同时支持BSD系统的开发。

Web 端实时防挡脸弹幕(基于机器学习)Web 端实时防挡脸弹幕(基于机器学习)Jun 10, 2023 pm 01:03 PM

防挡脸弹幕,即大量弹幕飘过,但不会遮挡视频画面中的人物,看起来像是从人物背后飘过去的。机器学习已经火了好几年了,但很多人都不知道浏览器中也能运行这些能力;本文介绍在视频弹幕方面的实践优化过程,文末列举了一些本方案可适用的场景,期望能开启一些脑洞。mediapipeDemo(https://google.github.io/mediapipe/)展示主流防挡脸弹幕实现原理点播up上传视频服务器后台计算提取视频画面中的人像区域,转换成svg存储客户端播放视频的同时,从服务器下载svg与弹幕合成,人像

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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール