Skip to content

渲染流水线:DOM、CSSOM、Layout、Paint、Raster 与 Composite

主题边界

  • 页面显示不是一句“浏览器自动渲染”就能概括,真正发生的是解析、样式计算、布局、绘制、栅格和合成。
  • 理解这条链路,才能解释为什么有的修改触发布局,有的只重绘,有的可以直接走合成。

机制与流程

  • HTML 解析生成 DOM,CSS 解析生成 CSSOM;两者结合后浏览器才能做样式计算。
  • Layout 决定盒子的几何信息,Paint 生成绘制指令,Raster 把结果变成位图/纹理,Composite 再把多个图层组合成最终帧。
  • transformopacity 等属性在图层已存在时,常可以跳过 layout/paint,直接由 compositor 更新。

关键差异

  • Layout 关心几何,Paint 关心像素,Composite 关心图层组合;三者不是同一层的“刷新”。
  • “只走合成”通常更便宜,但图层提升也有显存和管理成本,并不是越多越好。

边界条件

  • opacity: 0 不自动等于“只有 GPU 成本”;是否成层、是否大面积重绘仍要看实际渲染条件。
  • 读取 offsetWidthgetBoundingClientRect() 等布局信息时,浏览器可能被迫立即结算前面的改动。

工程落点

  • 动画优化的核心是减少 layout 和大面积 paint,而不是盲目宣称“使用 GPU”。
  • DevTools 的 Performance、Layers、Rendering 面板都要结合这条流水线来读。

相关主题