- 构建 DOM 树
- 浏览器无法直接理解和使用 HTML,所以需要将 HTML 转换为浏览器能够理解的结构——DOM 树
- 控制台里输入 document,打印结果就是一个完整的 DOM 树结构
- DOM 是保存在内存中的树状结构,可以通过 JavaScript 查询或修改其中内容
- 样式计算 构建 CSSOM 树
- 把 CSS 转换为浏览器能够理解的结构
- 浏览器同样无法直接理解纯文本的 CSS 样式,当渲染引擎接收到 CSS 文件时,会执行一个转换操作,将CSS文本转换为浏览器可以理解的结构——styleSheets,可通过控制台打印 document.styleSheets 查看,并且具备查询和修改功能
- 转换样式表的属性值,使其标准化
- 属性标准化:CSS 文本中有很多属性值,需要讲所有值转换为渲染引擎容易理解的、标准化的计算值。
- 计算出 DOM 树中每个节点的具体样式
- CSS 继承:每个 DOM 节点都包含有父节点的样式
- CSS 层叠:定义了如何合并来自多个源的属性值的方法
- 布局阶段 创建布局树
- 创建布局树
- ⚠️:DOM 树中所有不可见的节点都并没有包含到布局树中
- 遍历DOM树中所有可见节点,并添加到布局树中
- 不可见节点会被布局树忽略掉。因为属性包含 display: none
- 布局计算