link和@import区别

1,093 阅读2分钟

推荐使用link

强烈建议使用link标签,慎用@import方式。 这样可以避免考虑@import的语法规则和注意事项,避免产生资源文件下载顺序混乱和http请求过多的烦恼。

区别

1.从属关系区别

@import是 CSS 提供的语法规则,只有导入样式表的作用;link是HTML提供的标签,不仅可以加载 CSS 文件,还可以定义 RSS、rel 连接属性等。

2.加载顺序区别

加载页面时,link标签引入的 CSS 被同时加载;@import引入的 CSS 将在页面加载完毕后被加载。

3.兼容性区别

@import是 CSS2.1 才有的语法,故只可在 IE5+ 才能识别;link标签作为 HTML 元素,不存在兼容性问题。

4.DOM可控性区别

可以通过 JS 操作 DOM ,插入link标签来改变样式;由于 DOM 方法是基于文档的,无法使用@import的方式插入样式。

5.权重区别

link引入的样式权重大于@import引入的样式。

同等权重CSS样式的优先级由高到低的排序是:行内样式、内联样式、外联样式、导入样式 。如果外联样式和导入样式都有一个div{color:XX},最终的div样式是外联样式中所定义div样式 。

举例:分别给div行内样式、内联样式、外联样式、导入样式,看看他最终呈现什么效果。

<!DOCTYPE html>

<html>

 <head>

  <meta charset="UTF-8">

  <title></title>

  <style type="text/css"> 

   @import url("css/red.css");

   div{background: yellow;}

  </style>

  <link rel="stylesheet" type="text/css" href="css/green.css"/>

 </head>

 <body>

  <div style="background: purple;width: 150px;height: 150px;">have a nice day </div>

 </body>

</html>

由图可见,div最终呈现的是紫色,而紫色是行内样式设置的,它的优先级最高。接下来继续看,如果是内联样式和导入样式,它又会是什么效果呢?

<!DOCTYPE html>

<html>

 <head>

  <meta charset="UTF-8">

  <title></title>

  <style type="text/css"> 

  div{background: yellow;}  

   @import url("css/red.css");   

  </style>

 </head>

 <body>

  <div style="width: 150px;height: 150px;">have a nice day </div>

 </body>

</html>


显而易见,div最终呈现黄色,黄色是内联样式,它的优先级高于导入样式。

总结:以上讲述了CSS中的link和import的区别,总的来说,最好不要使用improt导入式,如果import加载的样式比较大,容易出现加载延迟,甚至有闪屏的情况。就目前来看,小型的网站还是推荐使用link导入,当然如果将来我们需要把CSS进行模块化管理,那会用到@import,这个还需要看情况的。

引用方式

<link  rel="stylesheet"  href="../css/123.css" />

<style type="text/css">   

    @import url("css/green.css");

</style>