侧边栏壁纸
博主头像
colo

欲买桂花同载酒

  • 累计撰写 1823 篇文章
  • 累计收到 0 条评论

描述浏览器从获取HTML到显示页面的关键渲染步骤

2025-12-14 / 0 评论 / 0 阅读

题目

描述浏览器从获取HTML到显示页面的关键渲染步骤

信息

  • 类型:问答
  • 难度:⭐

考点

浏览器渲染流程,关键渲染路径,HTML解析

快速回答

浏览器渲染页面的主要步骤:

  1. 解析HTML:构建DOM树
  2. 解析CSS:构建CSSOM树
  3. 合并DOM与CSSOM:形成渲染树(Render Tree)
  4. 布局计算:确定节点位置和尺寸(Layout)
  5. 绘制页面:将渲染树转换为屏幕像素(Paint)
## 解析

原理说明

浏览器渲染页面的过程称为关键渲染路径(Critical Rendering Path),包含5个顺序执行的步骤:

  1. 解析HTML构建DOM树:浏览器逐行读取HTML并解析成树状结构的文档对象模型(DOM)
  2. 解析CSS构建CSSOM:解析CSS样式表形成CSS对象模型(CSSOM),包含所有样式规则
  3. 合并生成渲染树:结合DOM和CSSOM,生成只包含可见元素的渲染树(隐藏元素如display:none不会包含)
  4. 布局计算(Layout/Reflow):计算每个渲染树节点在视口中的精确位置和尺寸
  5. 绘制(Paint):将布局结果转换为屏幕上的实际像素

代码示例

<!DOCTYPE html>
<html>
<head>
  <style>
    body { font-size: 16px; }
    .box { width: 50%; padding: 10px; }
  </style>
</head>
<body>
  <div class="box">Hello World</div>
</body>
</html>

浏览器处理流程:

  1. 解析HTML构建DOM树(包含<div class="box">节点)
  2. 解析CSS规则(body.box的样式)
  3. 合并生成带样式的渲染树
  4. 计算.box宽度(视口宽度的50%+20px内边距)
  5. 将文本和框体绘制到屏幕上

最佳实践

  • 优化CSS:减少嵌套层级,避免使用通配符选择器
  • 优先加载关键CSS:将首屏样式内联在<head>
  • 避免布局抖动:不要频繁读写DOM样式(如循环中修改offsetWidth

常见错误

  • 阻塞渲染的JS/CSS:未添加async/defer<script>会阻塞DOM构建
  • 未定义尺寸的图片:导致布局完成后重新计算(重排)
  • 过于复杂的CSS选择器:增加CSSOM构建时间

扩展知识

  • 重绘(Repaint):颜色等不影响布局的样式变化时发生
  • 重排(Reflow):尺寸/位置变化时触发,代价高昂(需重新执行Layout)
  • 合成(Compositing):现代浏览器使用GPU分层渲染,提升动画性能