整体流程:

  1. 解析HTML:浏览器解析HTML文档,构建DOM树

  2. 解析CSS:解析CSS样式表,构建CSSOM树

  3. 构建渲染树:将DOM树和CSSOM树合并,生成渲染树

  4. 布局计算:计算每个元素的位置和大小(重排)

  5. 绘制:将渲染树绘制到屏幕上(重绘)

详细步骤:

HTML解析:

  • 从上到下解析HTML标签

  • 遇到script标签会阻塞解析

  • 构建DOM节点树

CSS解析:

  • 解析CSS规则

  • 构建CSSOM树

  • 计算样式优先级

渲染树构建:

  • 只包含可见元素

  • 合并DOM和CSSOM信息

  • 确定每个节点的样式

布局阶段:

  • 计算元素的位置和尺寸

  • 确定每个节点在屏幕上的确切位置

绘制阶段:

  • 将渲染树转换为屏幕上的像素

  • 包括文本、颜色、图像等

优化建议:

  • 减少重排重绘

  • 合理使用CSS

  • 避免阻塞渲染的脚本

这个流程是浏览器将代码转换为用户可见页面的核心过程。