乐趣区

关于前端:CSS加载会造成阻塞吗

CSS 不会阻塞 DOM 解析,但会阻塞 DOM 渲染。
CSS 会阻塞 JS 执行,但不会阻塞 JS 文件下载

CSSOM 的作用:

· 提供给 JS 操作样式表的能力;· 为布局树的合成提供根底的款式信息。

CSSOM 体现在 DOM 中就是 document.styleSheets。

DOM 和 CSSOM 通常是并行构建的,所以 css 加载不会阻塞 DOM 的解析。然而因为 Render Tree 是依赖 DOM Tree 和 CSSOM Tree 的,所以它必须等到两者都加载实现后,实现相应的构建,才开始渲染。
 因而,CSS 加载会阻塞 DOM 渲染。

因为 JS 是可操纵 DOM 和 CSS 款式的。如果在批改这些元素属性同时渲染界面(即 JS 线程和 UI 线程同时运行),那么渲染线程前后取得的元素数据就可能不统一。因而为了避免渲染呈现不可预期的后果,
 浏览器就设置了 GUI 渲染线程和 JS 引擎为互斥的关系。

有时候 JS 须要等到 CSS 的下载,这是为什么呢?

 如果脚本的内容是获取元素的款式,宽低等 CSS 管制的属性,浏览器是须要计算的,也就是依赖于 CSS。浏览器也无奈感知到脚本内容到底是什么,为防止款式获取,因而,只能等后面所有的款式下载实现后,再执行 JS。JS 文件下载和 CSS 文件下载是并行的,有时候 CSS 文件很大,所有 JS 须要期待。因而,样式表会在前面的 JS 执行前先加载执行实现,所以,CSS 会阻塞前面 js 的执行。
退出移动版