浏览器渲染流程是将 HTML、CSS、JavaScript 转换为用户可见页面的过程,包括 DOM/CSSOM 构建、渲染树布局、绘制和合成。

解决的核心痛点:如何将 Web 代码高效地转换为用户可见的像素画面?


核心命题


运行机制

flowchart TD
    HTML["HTML"] --> Parser1["HTML 解析器"]
    CSS["CSS"] --> Parser2["CSS 解析器"]
    Parser1 --> DOM["DOM 树"]
    Parser2 --> CSSOM["CSSOM 树"]
    DOM+CSSOM --> Render["渲染树"]
    Render --> Layout["布局"]
    Layout --> Paint["绘制"]
    Paint --> Composite["合成"]
    JS["JavaScript"] -.->|阻塞| Parser1
    JS -.->|修改| DOM
    JS -.->|修改| CSSOM

关键区别

阶段触发条件性能影响
重排 (Reflow)布局改变(位置、大小)
重绘 (Repaint)样式改变,布局不变
合成 (Composite)仅合成层变化

应用场景

  • 适用场景
    • 首屏优化:减少渲染阻塞,快速显示首屏内容
    • 动画性能:使用 transform/opacity 实现 GPU 加速
  • 误用
    • 频繁修改布局属性:如 width、height、left
    • 忽略 JS 阻塞:将 script 标签放在 head 中

知识图谱


参考延伸