CSS学习(9)@import

90 阅读3分钟

前言

  • CSS引用方式有哪些?link和@import的区别?

@import

import指令也是用来导入CSS样式的。

import的基本用法如下:

  1. 在HTML文件中导入外部样式
<style>
  @import url('./test.css');
</style>

要在HTML源代码直接应用@import引入外部CSS文件,需要将@import放入style标签。

  1. 在CSS文件中引入另一个CSS文件
@import url('./test.css');

除了HTML源代码中使用style标签来运用@import,在CSS文件代码中依旧可以使用@import,这个时候就不需要style标签,而是直接应用@import就可,这样便可实现一个(多个)CSS文件中引入套入别的一个(多个)CSS文件。

  1. @improt 还支持媒体查询,因此可以允许依赖媒体的导入
/* 只在媒体为 print 的时候导入 print.css */
@import "print.css" print;
/* 只在媒体为 screen 并且视口最小宽度为 480px 的时候导入 screen.css */
@import "screen.css" screen and (min-width: 480px);

link和@import的区别:

  1. link属于HTML标签,而@import是CSS提供的。

    link标签除了可以加载CSS外,还可以做很多其它的事情,比如定义RSS,定义rel连接属性等,@import就只能加载CSS了。

  2. 兼容性的区别

    import只在IE5以上才能识别,而link是HTML标签,无兼容问题。

  3. 加载顺序的区别

    所以在页面被加载的时候,link标签引入的CSS会同时被加载,而@import引入的CSS会等到页面全部被下载完再加载。

  4. 当使用JavaScript控制DOM去改变样式的时候,只能使用link标签,因为@import不是DOM可以控制的。

    对于可以换主题的网站,可以通过改变link标签的href值来改变的外部样式表,但是对于import是无法操作的,毕竟不是标签。

另外,从性能优化的角度来讲,尽量要避免使用@import。

使用@import引入CSS会影响浏览器的并行下载。使用@import引用的CSS文件只有在引用它的那个CSS文件被下载、解析之后,浏览器才会知道还有另外一个CSS需要下载,这时才去下载,然后再开始解析、构建Render Tree等一系列操作。

多个@import会导致下载顺序紊乱。在IE中,@import会引发资源文件的下载顺序被打乱,即排列在@import后面的JS文件先于@import下载,并且打乱甚至破坏@import自身的并行下载。

总结

  • CSS引用方式有哪些?link和@import的区别?

CSS引用方式有:

  • 外联,通过link标签或@import外部链接样式表
  • 内联,在head标记中使用style标记定义样式
  • 嵌入,在元素的开始标记里通过style属性定义样式

link和@import的区别:

  1. link属于HTML标签,而@import是CSS提供的。
  2. 兼容性的区别
  3. 加载顺序的区别
  4. 当使用JavaScript控制DOM去改变样式的时候,只能使用link标签,因为@import不是DOM可以控制的。