CSS/JS对DOM渲染的影响

CSS阻塞DOM渲染

无论是外链CSS还是内联CSS都会阻塞DOM渲染(Rendering),然而DOM解析(Parsing)会正常进行。

这意味着在CSS下载并解析结束之前,它后面的HTML都不会显示。 这也是为什么我们把样式放在HTML内容之前,以防止被呈现内容发生样式跳动。 当然代价就是显示延迟,所以性能攸关的站点都会内联所有CSS。
然而,很多浏览器中CSS还会延迟脚本执行和DOMContentLoaded事件触发(该事件就是jQuery的dom ready)

JS阻塞DOM渲染

不论是内联还是外链JavaScript都会阻塞后续DOM解析(Parsing),当然后续DOM的渲染(Rendering)也被阻塞了。 

之所以DOM解析(Parsing)需要暂停, 是因为脚本中可能会包含类似document.write的语句,即脚本有可能改变当前DOM树。
当然现代浏览器不会这么傻,可以推测式地继续解析以提高性能。当然这些优化不应改变DOM应有的行为。
值得注意的是JavaScript只会阻塞后续的DOM而非整个DOM,这意味着前面的DOM可以被正确地解析以及渲染。 这也是为什么我们把脚本放在页面底部:脚本仍在下载时页面已经可以正常地显示了

你可能感兴趣的:(CSS/JS对DOM渲染的影响)