首页 > 其他分享 >HTML渲染的基本过程

HTML渲染的基本过程

时间:2023-02-23 16:58:18浏览次数:30  
标签:基本 浏览器 DOM 渲染 HTML 重排 CSS

一、HTML网页渲染的基本过程

将URL对应的各种资源,通过浏览器渲染引擎的解析,输出可视化的图像

二、浏览器的渲染引擎

一个渲染引擎大致包括HTML解释器、CSS解释器、布局和JavaScript引擎

 

 

 

 

HTML解析器:解释HTML语言的解释器,本质是将HTML文本解释成DOM树(文档对象模型)。

CSS解释器:解释样式表的解释器,其作用是将DOM中的各个元素对象加上样式信息,从而为计算最后结果的布局提供依据。

布局:将DOM和css样式信息结合起来,计算它们的大小位置等布局信息,形成一个能够表示这所有信息的内部表示模型即渲染树。

JavaScript引擎:JavaScript可以修改网页的内容,也能修改CSS的信息,JavaScript引擎解释JavaScript代码并把代码的逻辑和对DOM和CSS的改动信息应用到布局中去,从而改变渲染的结果。

这些模块依赖很多其他的基础模块,这其中包括网络,存储,2D/3D图形,音频视频和图片解码器等。实际上,渲染引擎中还应该包括如何使用这些依赖模块的部分,这部分的工作其实并不少,因为需要使用它们来高效的渲染网页。例如,利用2D/3D图形库来实现高性能的网页绘制和网页的3D渲染,这个实现非常非常的复杂。最后,当然,在最下面,依然少不了操作系统的支持,例如线程支持,文件支持等等。

三、浏览器的渲染过程

  1. 用户输入url地址,DNS(域名解析系统)服务器根据输入的域名查找对应 IP
  2. 浏览器向该IP地址服务器发送http请求,如果服务器段返回以301之类的重定向,浏览器根据相应头中的location再次发送请求
  3. 浏览器加载 HTML 文件及文件内包含的外部引用文件(CSS、JS)及图片,多媒体等资源。
  4. 据请求回来的 HTML 文件,渲染引擎开始从上到下解析HTML文档,首先将标签转换成DOM树中的DOM节点(包括js生成的标签),也叫内容树(Content Tree/DOM Tree),此时解析过程中碰见了外部引用的 CSS 文件,去服务器请求回 CSS 文件,构建 CSSOM (CSS Object Model)树,加载解析样式生成 CSSOM 树。CSSOM 的解析过程与 DOM 的解析过程是并行的。
  5. 此时继续解析 HTML,又碰见了外部引用的 JS 文件,去服务器请求回 JS 文件,加载并执行 JS 代码(包括内联代码或外联 JS 文件)
  6. 此时在解析 HTML 过程中发现一个标签内引用了一张关联图片,去服务器请求回这张图片,浏览器解析器不会等待图片下载完,而是继续渲染后面的代码。
  7. 此时 HTML 代码和 CSS 代码已经形成 DOM 树和 CSSOM 树,并生成渲染树(render tree),渲染树按顺序展示在屏幕上的一系列矩形,这些矩形带有字体,颜色和尺寸等视觉属性。
  8. 布局(layout):从根节点递归调用,计算每一个元素的大小、位置等,给出每个节点所应该在屏幕上出现的精确坐标;
  9. 绘制(painting):遍历渲染树绘制所有节点,为每一个节点适用对应的样式,这一过程是通过 UI 后端模块完成。

 

 

 

四、Repaint(重绘)和Reflow(重排/重构/回流)

1.Repaint(重绘)

Repaint(重绘)改变不影响元素在网页中的位置的元素样式时,浏览器会根据元素的新属性重新绘制一次,使元素呈现新的外观,譬如background-color(背景色), border-color(边框色), visibility(可见性)。重绘不会带来重新布局,所以并不一定伴随重排。

2.Reflow(重排/重构/回流)

Reflow(重排/重构/回流)当渲染树中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建, 这就称为回流(reflow)。每个页面至少需要一次回流,就是在页面第一次加载的时候。

触发重排的条件

1、页面渲染初始化;(无法避免)

2、添加或删除可见的DOM元素;

3、元素位置的改变,或者使用动画;

4、元素尺寸的改变——大小,外边距,边框;

5、浏览器窗口尺寸的变化(resize事件发生时);

6、填充内容的改变,比如文本的改变或图片大小改变而引起的计算值宽度和高度的改变;

7、读取某些元素属性

8、激活CSS伪类(例如::hover)

3.重排和重绘的关系

    • 在重排的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成重排后,浏览器会重新绘制受影响的部分到屏幕中,该过程称为重绘。
    • 重排一定会导致重绘,但是重绘不一定导致重排。
    • 重绘重排的代价:耗时,导致浏览器卡慢。

 

标签:基本,浏览器,DOM,渲染,HTML,重排,CSS
From: https://www.cnblogs.com/Abbynameswld/p/17147946.html

相关文章

  • SAP UI5 index.html 里的 bootstrap script 介绍
    在SAPUI5应用程序的index.html文件中,通常有一行类似于以下代码的声明:<scriptid="sap-ui-bootstrap"src="resources/sap-ui-core.js"data-sap-ui-theme="sap_b......
  • docker基本操作
     【1】常见操作本地镜像:dockerimages容器列表:dockerps-a从镜像创建容器:dockerrun...启动所有容器:dockerstart$(dockerps-a|awk'{print$1}'|tail......
  • 直播软件源码,在vue中使用html2canvas在前端生成图片
    直播软件源码,在vue中使用html2canvas在前端生成图片1、安装 npminstallhtml2canvas​2、用法 importhtml2canvasfrom'html2canvas'; html2canvas(document.......
  • Javascript 基本语法
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* 多行注释 JS注释 多行注释,注......
  • HTML5新特性、新增标签
    1.HTML5是什么?有哪些新特性?有哪些新增标签?如何让低版本的IE支持HTML5新标签HTML5是超文本标记语言的第五次重新修订,2014年10月29日标准规范制定完成。HTML5的设计目......
  • 重识html
    html重识html万维网用url统一资源定位符标识分布因特网上的各种文档各种概念URL:统一资源定位器它是WWW的统一资源定位标志,就是指网络地址在WWW上,每一信息资源都有......
  • grep命令的基本用法
    grep命令是一个非常强大的文本搜索工具,可以通过各种选项和参数来控制搜索的范围、输出格式和匹配模式。下面是grep命令的一些常用用法:在文件中搜索指定字符串模式并输出......
  • 红帽认证RedHat-RHCSA shell的基本应用
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操......
  • HTML——day3
    html中的注释:”<!---xxxx->“写注释是一种很好的编程习惯,可以让我们后期代码查漏补缺的时候更加的快速,同时也给别人阅读我们的代码带来方便。表格标签:表格标签是使我们......
  • html+css基础--选择器
    注:图片来源于w3c 1、id选择器(只能唯一、#abc)2、class选择器(可以重复、.abc)(又称类选择器,属性值可有多个,用空格隔开)3、通用选择器*4、复合选择器-交集选......