浏览器工作原理与实践学习笔记(三):渲染流程(上)

一、HTML、CSS 和 JavaScript

在这里插入图片描述

二、渲染流水线

按照渲染的时间顺序,流水线可分为如下几个子阶段:构建 DOM 树、样式计算、布局阶段、分层、绘制、分块、光栅化和合成。

  • 开始每个子阶段都有其输入的内容
  • 然后每个子阶段有其处理过程
  • 最终每个子阶段会生成输出内容

三、构建 DOM 树

为什么要构建 DOM 树呢?这是因为浏览器无法直接理解和使用 HTML,所以需要将 HTML 转换为浏览器能够理解的结构——DOM 树
在这里插入图片描述
在这里插入图片描述
图中的 document 就是 DOM 结构,可以看到,DOM 和 HTML 内容几乎是一样的,但是和 HTML 不同的是,DOM 是保存在内存中树状结构,可以通过 JavaScript 来查询或修改其内容

四、样式计算(Recalculate Style)

1、把 CSS 转换为浏览器能够理解的结构

在这里插入图片描述
从图中可以看出,CSS 样式来源主要有三种:

  • 通过 link 引用的外部 CSS 文件
  • 通过 link 引用的外部 CSS 文件
  • 元素的 style 属性内嵌的 CSS

当渲染引擎接收到 CSS 文本时,会执行一个转换操作,将 CSS 文本转换为浏览器可以理解的结构——styleSheets。并且该结构同时具备了查询和修改功能。

2、转换样式表中的属性值,使其标准化

在这里插入图片描述
2em、blue、bold,这些类型数值不容易被渲染引擎理解,所以需要将所有值转换为渲染引擎容易理解的、标准化的计算值,这个过程就是属性值标准化。

3、计算出 DOM 树中每个节点的具体样式

CSS 的继承规则和层叠规则。

首先是 CSS 继承。CSS 继承就是每个 DOM 节点都包含有父节点的样式。
在这里插入图片描述
在这里插入图片描述
样式计算过程中的第二个规则是样式层叠。层叠是 CSS 的一个基本特征,它是一个定义了如何合并来自多个源的属性值的算法。它在 CSS 处于核心地位,CSS 的全称“层叠样式表”正是强调了这一点。

这个阶段最终输出的内容是每个 DOM 节点的样式,并被保存在 ComputedStyle 的结构内。
在这里插入图片描述

五、布局阶段

现在,我们有 DOM 树和 DOM 树中元素的样式,但这还不足以显示页面,因为我们还不知道 DOM 元素的几何位置信息。那么接下来就需要计算出 DOM 树中可见元素的几何位置,我们把这个计算过程叫做布局

Chrome 在布局阶段需要完成两个任务:创建布局树和布局计算。

1、创建布局树

你可能注意到了 DOM 树还含有很多不可见的元素,比如 head 标签,还有使用了 display:none 属性的元素。所以在显示之前,我们还要额外地构建一棵只包含可见元素布局树
在这里插入图片描述

2、布局计算

猜你喜欢

转载自blog.csdn.net/qq_36514197/article/details/119759120
今日推荐