js和css放置顺序产生的问题

CSS 和 JS 放置顺序不同,对于不同浏览器,由于解析机制不同,在解析时会产生一些问题,所以一般建议

使用 link 标签将样式表放在顶部

  • 白屏问题

如果把样式放在底部,对于IE浏览器,在某些场景下(新窗口打开,刷新等)页面会出现白屏,而不是内容逐步展现。

也就是在浏览器解析时,浏览器会加载网页内容,依次执行在加载样式、js,在渲染完成前的等待过程中,浏览器会出现白屏没有任何内容的问题。

如果使用 @import 标签,即使 CSS 放入 link, 并且放在头部,也可能出现白屏

  • FOUC (Flash of Unstyled Content) 无样式内容闪烁

如果把样式放在底部,对于IE浏览器,在某些场景下(点击链接,输入URL,使用书签进入等),会出现 FOUC 现象(逐步加载无样式的内容,等CSS加载后页面突然展现样式).对于 Firefox 会一直表现出 FOUC .

这种解析机制一般是指般加载边解析,比如html和css里面的样式不同,会产生先后解析出来的样式产生覆盖,像是闪烁一样。

  • css和javascript的加载不一样,同一个域名下可以同时加载2个甚至4个css(并行加载几个与http协议有关),js只能一个一个进行加载

将JS放在底部

脚本会阻塞后面内容的呈现
脚本会阻塞其后组件的下载

对于图片和CSS, 在加载时会并发加载(如一个域名下同时加载两个文件). 但在加载 JavaScript 时,会禁用并发,并且阻止其他内容的下载. 所以把 JavaScript 放入页面顶部也会导致 白屏 现象.

文章目录
,