结论:
CSS加载会不会影响DOM树解析
CSS加载会阻碍DOM树渲染
CSS加载会阻碍JS运行
结论:
CSS加载会不会影响DOM树解析
CSS加载会阻碍DOM树渲染
CSS加载会阻碍JS运行
webkit渲染过程
浏览器的渲染流程如下:
1:HTML解析文件,生成DOM Tree, 解析CSS文件生成CSSOM Tree
2:将DOM Tree和CSSOM Tree结合, 生成Render Tree(渲染树)
3:根据Render Tree渲染绘制,将像素渲染到屏幕上。
从流程可以看出来
1:DOM解析和CSS解析是两个并行的过程,这就解释了为什么CSS加载不会阻碍DOM的解析。
2:由于Render Tree是依赖于DOM Tree和CSSOM Tree的,所以必须等待CSSOM Tree构建完成(CSS加载完成或者CSS加载失败)之后, 才能渲染。 因此CSS加载会阻塞DOM的渲染。
3:由于JS可能会操作之前的DOM节点和CSS样式,因此浏览器会位置html和css js的顺序。因此 样式表会在后面的js执行前先加载执行完毕, 所以会阻塞后面JS的执行。
对于浏览器来说,页面加载主要有两个事件,一个是DOMContentLoaded,另一个是onLoad。而onLoad没什么好说的,就是等待页面的所有资源都加载完成才会触发,这些资源包括css、js、图片视频等。
而DOMContentLoaded,顾名思义,就是当页面的内容解析完成后,则触发该事件。
1: 如果页面中同时存在css和js,并且存在js在css后面,则DOMContentLoaded事件会在css加载完后才执行。
2: 其他情况下,DOMContentLoaded都不会等待css加载,并且DOMContentLoaded事件也不会等待图片、视频等其他资源加载