大宇宇宇
发布于 2025-09-24 / 13 阅读
0
0

浏览器渲染过程

浏览器渲染过程是将 HTML、CSS 和 JavaScript 转化为可视化页面的复杂流程,主要分为以下几个关键阶段:

1. 解析(Parsing)

  • HTML 解析:浏览器将 HTML 文本转换为 DOM(文档对象模型)树,标记之间的嵌套关系会形成树的层级结构

  • CSS 解析:将 CSS 样式转换为 CSSOM(CSS 对象模型)树,记录所有选择器及其对应的样式规则

  • 阻塞行为:HTML 解析会被<script>标签阻塞(除非使用deferasync),而 CSS 解析会阻塞 JavaScript 执行

2. 样式计算(Style Calculation)

  • 结合 DOM 和 CSSOM,计算每个 DOM 节点最终的样式(计算样式

  • 处理继承和层叠规则,解决样式冲突

  • 生成渲染树(Render Tree):仅包含可见元素(排除display: none的元素)

3. 布局(Layout)

  • 也称为回流(Reflow),计算渲染树中各元素的几何信息

  • 确定每个元素的位置、大小、排列方式等

  • 布局是递归的,父元素的布局变化可能会影响子元素

4. 绘制(Painting)

  • 也称为重绘(Repaint),将布局后的元素绘制到屏幕上

  • 包括设置颜色、背景、阴影、文本等视觉属性

  • 可以将元素分解为多个图层独立绘制,提高效率

5. 合成(Compositing)

  • 将所有绘制好的图层按照正确的顺序合并,形成最终的屏幕图像

  • 处理图层间的重叠关系、透明度等

  • 由 GPU 加速处理,提高动画和滚动性能

关键优化点

  • 减少布局(回流)次数:布局计算成本高,避免频繁修改宽高、位置等属性

  • 合理使用图层:对动画元素使用will-change: transform创建独立图层

  • 优化选择器性能:避免过于复杂的 CSS 选择器

  • 控制 JavaScript 执行:避免长任务阻塞渲染


评论