网页的渲染机制

从我们输入网址到展现页面,可以分为三个过程:

浏览器解析

1、浏览器通过请求的 URL 进行域名解析,向服务器发起请求,接收文件(HTML、CSS、JS、Images等等)。

2、HTML 文件加载后,开始构建 DOM Tree

3、CSS 样式文件加载后,开始解析和构建 CSS Rule Tree

4、Javascript 脚本文件加载后, 通过 DOM API 和 CSSOM API 来操作 DOM Tree 和 CSS Rule Tree

浏览器渲染

1、解析HTML标签,构建DOM tree

2、解析 CSS 标签, 构建 CSSOM tree,

3、把 DOM 和 CSSOM 组合成 渲染树 (render tree)

4、在渲染树的基础上进行布局, 计算每个节点的几何结构,(计算最终的样式),可在Chrome调试工具,computed中查看到最终效果。

5、把每个节点绘制到屏幕上 (painting)


网页的渲染机制_第1张图片

Webpage Rendering

当用户在浏览网页时进行交互或通过 js 脚本改变页面结构时,以上的部分操作有可能重复运行,此过程称为 Repaint 或 Reflow。

Repaint

当元素改变的时候,将不会影响元素在页面当中的位置(比如 background-color, border-color, visibility),浏览器仅仅会应用新的样式重绘此元素,此过程称为 Repaint。

Reflow

当元素改变的时候,将会影响文档内容或结构,或元素位置,此过程称为 Reflow。( HTML 使用的是 flow based layout ,也就是流式布局,所以,如果某元件的几何尺寸发生了变化,需要重新布局,也就叫 Reflow。)

Reflow 的成本比 Repaint 的成本高得多的多。一个结点的 Reflow 很有可能导致子结点,甚至父点以及同级结点的 Reflow 。在一些高性能的电脑上也许还没什么,但是如果 Reflow 发生在手机上,那么这个过程是延慢加载和耗电的。----浏览器的渲染原理简介

你可能感兴趣的