05 宏观下的浏览器:渲染阶段——HTML、CSS和JavaScript是如何变成页面的?

这篇博客深入解析了浏览器的渲染流水线,包括构建DOM树、样式计算、布局阶段、分层和绘制等步骤。内容涵盖了从HTML和CSS转换为可视页面的过程,强调了布局计算和分层在实现复杂效果中的作用,如3D变换、页面滚动和z-index的管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.渲染流水线

2.构建DOM树

3.样式计算

4.布局阶段

5.分层

1.渲染流水线

  1. 构建 DOM 树:将HTML内容转换为DOM树结构
  2. 样式计算:将CSS样式表转换为浏览器可以理解的styleSheets,计算DOM节点的样式
  3. 布局阶段:创建布局树,并计算元素的布局信息
  4. 分层:对布局树进行分层,生成分层树
  5. 绘制:为每个图层生成绘制列表,并将其提交到合成线程
  6. 分块:合成线程将图层分成图块
  7. 光栅化:在光栅话线程池中将图块转换为位图
  8. 合成:合成线程发送绘制图块命令DrawQuad给浏览器进程,浏览器进程根据DrawQuad生成页面并显示。

2.构建DOM树

即开发者工具的 Element。
在这里插入图片描述

3.样式计算

  1. 将 CSS 转换为浏览器能够理解的结构
  2. 转换样式表中的属性值,使其标准化
  3. 计算出DOM树中每个节点的具体样式
3-1 将 CSS 转换为浏览器能够理解的结构

渲染引擎接收到css文本,会执行一个转换操作,会执行一个转化操作,将css文本转换为浏览器可以理解的结构——styleSheets。document.styleSheets可以查看。

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

在这里插入图片描述

3-3 计算出DOM树中每个节点的具体样式
  • css继承规则:每个DOM节点都包含有父节点的样式
    在这里插入图片描述
    都继承了body的 font-size: 20px

  • 层叠规则:定义了如何合并来自多个源的属性值的算法(权重大的就覆盖权重小的)

4.布局阶段

  1. 创建布局树
  2. 布局计算
4-1 创建布局树
  1. 遍历DOM中所有的可见节点,把这些节点加到新创建的布局树中
  2. 不可见的节点被布局树忽略掉,如head标签,display:none的标签。
4-2 布局计算
  • 计算每个元素的几何坐标位置,将这些信息保存在布局树中。

5.分层

  • 为了实现页面中一些复杂的效果:3D变换、页面滚动、z-index做z轴排序等等,渲染引擎为特定的节点生成专业的突出,形成一个图层树(LayerTree)
  • 类似 photoshop 的图层
  • 拥有层叠上下文的元素会被提升为单独的一层(如定位、opacity、z-index)
  • 需要裁剪(clip)的地方会被创建为图层
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值