引入CSS文件的@import与link的权重分析

我很少在CSS用到@import这个标签,最近看到一句话“link方式的样式的权重 高于@import的权重”,感觉不太对,@import只是一个引入外部文件而已,怎么会有高于link的权重呢?于是我比较懒,直接在一个静态页面里面测试了一下,分别把@import的样式放置在link的前面和后面测试,结果发现前面的被后面的link所覆盖,也就是说这个说法是错误的。

因而得出结论(只考虑HTML中样式文件的优先级):

  1. @import与内联样式一起时,内联样式>导入样式
  2. 除了第一种情况,其它时候以样式加载顺序为参考,后加载的优先级越高(最近优先原则)

最后,其实这种@import文件导入的方式已经很少用了,个人建议用link方式。

原因是link载入时是和HTML的载入同步加载的,而@import则是在页面内容载入完成之后再引用的。如果网速慢的话,可能会导致页面的样式混乱。

另外使用@import时要注意添加地方,在CSS手册中提到:

  1. 该规则必须在样式表头部最先声明。并且其后的分号是必需的,如果省略了此分号,外部样式表将无法正确导入,并会生成错误信息。
  2. IE使用@import无法引入超过35条的样式表。

关注我

我的微信公众号:前端开发博客,在后台回复以下关键字可以获取资源。

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
  • 回复「Vue脑图」获取 Vue 相关脑图
  • 回复「思维图」获取 JavaScript 相关思维图
  • 回复「简历」获取简历制作建议
  • 回复「简历模板」获取精选的简历模板
  • 回复「加群」进入500人前端精英群
  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
  • 回复「知识点」下载高清JavaScript知识点图谱

每日分享有用的前端开发知识,加我微信:caibaojian89 交流