浏览器的渲染流程

153 阅读2分钟

一、浏览器的渲染流程:

二、流程解析:

  1. 浏览器发送请求之后,服务器或本地缓存返回给浏览器HTML文件,这个时候主要是解析HTML文件并且构建DOM树;

注意:如果构建DOM的时候遇到JS,服务器会去请求下载JS文件,JS文件如果没有其他额外设置,会默认等待CSSOM构建完成,再下载执行JS操作。

因为如果先返回并且解析JS文件是会发生阻塞的,我们不能先执行JS文件

  1. 在解析HTML文件时,遇到link标签,服务器就去请求CSS文件,等待CSS文件返回完毕,解析CSS文件并且构建CSSOM树;
  2. CSSOM构建完成之后和DOM树一起绘制成渲染树

注意:渲染树是需要DOM和CSSOM构建完成之后才能构建的。

  1. 然后根据CSS布局绘制页面。

三、流程图示:

DOM和CSSOM结合构建成渲染树:


四、思考:

1、DOM和CSSOM解析有什么不同

DOM可以部分解析,但是CSSOM不能部分解析,只能一次性全部解析。

如下代码:如果CSSOM先解析body,没有解析或延迟解析后边的div,布局就乱套了,所有CSSOM不能部分解析。

body:{
  font-size:32px;
}
body div{
  font-size:16px
}

2、JS会阻塞HTML的解析吗?为什么?

JS是会阻塞HTML的解析的,因为JS既可以操作DOM又可以操作CSSOM,如果不等JS下载解析执行完之后再构建DOM,可能会导致网页有些内容出现了又消失。

3、HTML文件或CSS文件是如何被解析成DOM或CSSOM的?

HTML文件和CSS文件的解析大致流程是一样的:

字节先转换成字符,再转化成Token,再转化成节点,最后构建CSSOM