浏览器渲染

92 阅读3分钟

浏览器渲染是指浏览器将从服务器获取到的 HTML、CSS、JavaScript 等资源转换为用户可见的网页的过程。这个过程包括了多个步骤,从解析 HTML 到最终的页面呈现。以下是浏览器渲染的详细过程:

HTML 解析和构建 DOM(文档对象模型)

浏览器首先从服务器获取 HTML 文件。解析 HTML 的过程称为构建 DOM。浏览器将 HTML 文档解析为一个由节点组成的树状结构,其中每个 HTML 元素都对应一个节点。这个树状结构即为 DOM(文档对象模型),DOM 表示了页面的结构,它可以被 JavaScript 脚本访问和修改.

CSS 解析和构建 CSSOM(样式对象模型)

浏览器获取并解析外部 CSS 文件,也解析文档中包含的内联样式和嵌套样式,解析器将 CSS 文件中的样式规则解析成一个层叠的样式表,构建CSSOM(样式对象模型)。CSSOM 表示页面的样式信息,包括每个元素的计算样式,考虑了层叠规则和继承。

合并 DOM 和 CSSOM 构建渲染树:

浏览器将 DOM 和 CSSOM 合并成一个渲染树。渲染树仅包含需要显示的节点和其样式信息,忽略不需要显示的节点(比如隐藏的元素)。

布局(Layout)

浏览器根据渲染树的结构和样式信息,计算每个节点在屏幕上的确切位置和大小,这个过程称为布局。布局计算过程考虑了盒模型、浮动、定位等因素,确定了每个元素在屏幕上的位置,以及它们之间的相对位置。

绘制(Painting)

在布局完成后,浏览器根据渲染树的布局信息开始绘制页面。这个过程称为绘制,绘制是将元素转化为实际的像素颜色的过程。浏览器将元素按照它们在屏幕上的位置绘制出来,创建一个位图。

合成(Compositing)

浏览器将绘制的位图合成到屏幕上,形成最终的页面。合成过程也包括处理层叠、透明度等效果。

JavaScript 解释和执行

如果页面包含 JavaScript,浏览器在上述过程中会解释和执行 JavaScript 代码。JavaScript 可能会修改 DOM、CSSOM,触发重新布局和绘制。

处理用户输入和交互

浏览器会监听用户的输入事件,如鼠标点击、键盘输入等,以及处理用户的交互。JavaScript 可以通过事件处理程序来响应用户输入,修改页面的状态,或向服务器发起请求。

整个渲染过程是一个复杂而高效的流水线,每个步骤都相互关联,浏览器需要在用户感知的时间内快速完成,因此这些步骤可能会被浏览器进行优化,以提高用户体验和性能。优化渲染性能通常涉及到减小布局和绘制的成本,使用合适的 CSS 和 JavaScript 编写代码,以及利用浏览器的缓存和并发加载等机制,优化手段包括异步加载、懒加载、缓存等策略,以及合理的 CSS 和 JavaScript 编写,以减小布局和绘制的成本。