浏览器渲染页面过程
渲染过程 1.解析html文件,先是head,后是body 2.如果头部有外部的css链接,就去下载该css,如果有js链接也去下载 3.解析body部分,并生成DOM树,同时浏览器主进程去下载CSS 4.CSS文件下载完成,解析CSS文件成树形的数据结构(CSSOM树),然后结合DOM树合并成RenderObject树 5.布局(layout):布局RenderObject树,负责RenderObject树中的元素的尺寸,位置等计算 6.绘制(painting):绘制RenderObject树,绘制页面的像素信息,绘制到页面上。用户可以看到了 其中,前四步执行的比较快,5.6步执行的比较耗时。这是因为可能会发生回流(也叫重排,reflow。重新执行步骤5)及重绘(repaint,重新执行步骤6)。 重排和重绘到底是啥意思呢?接下来,对以上六个步骤进行详解的同时再解释重排和重绘: 第1.2.3步可以统称为构建DOM树: 当浏览器接收到服务器响应来的HTML文档后,会遍历文档节点,生成DOM树。需要注意的是,DOM树的生成过程中可能会被CSS和JS的加载执行而阻塞。 在这一步完成的时候,可能会发生 渲染阻塞 渲染阻塞 :当浏览器遇到一个 script 标记时,DOM 构建将暂停,直至脚本完成执行,然后继续构建DOM。每次去执行JavaScript脚本都会严重地阻塞DOM树的构建