HTML渲染那些事-结论
JavaScript 到底会不会阻塞你的页面渲染?
- 当
JS
为内联的情况下,是会阻塞页面渲染的。 - 当
JS
为外链的情况(不考虑async
和defer
的情况),分为两种情况,第一种放在head
中,会阻塞页面渲染,第二种放在body
底部,不会阻塞页面渲染(也就是FP)。
- 自己实验的情况下,只要
JS标签
前面有div
等一些可视内容,FP
就会在JS
执行前,否则就在JS执行后。
CSS 到底会不会阻塞你的页面渲染?
CSS
不会阻塞DOM解析
,但是会阻塞页面渲染,因为render tree
需要DOM树
和CSSOM树
。- 一种特殊情况,当
CSS
后面有JS标签
(不考虑async, defer),会阻塞DOM解析
,因为CSS
会阻塞JS
执行,JS
会阻塞DOM
,所以看上去就是CSS
阻塞DOM
解析。
CSS
会阻塞JS
执行是因为JS
代码里面可能会操作CSS
,导致不一致的问题,和JS阻塞DOM
解析类似。