深入理解CSS中的@import

假期很短暂,快乐却无边,工作很苦闷,赚钱最重要,陶醉在假期的快乐中,奋斗在工作的战线中,苦中寻乐一点甜,快乐与你长相伴。

我们知道,css文件引入方式有两种:
1. HTML中使用link标签

XML/HTML Code复制内容到剪贴板
  1. <linkrel="stylesheet"rel="nofollow noopener noreferrer" href="style.css"/>

2.CSS中@import

CSS Code复制内容到剪贴板
  1. @import"style.css";

第一种方式最为常见最为主流,第二种方式则很少见到有人这么写,因而也常被开发工程师所忽略。这篇文章就详细解剖之。
语法

@import语法有两种:

CSS Code复制内容到剪贴板
  1. @import"style.css";
  2. @importurl("style.css");

这两种语法并没什么差别。
规则
import规则一定要先于除了@charset的其他任何CSS规则,这句话是什么意思呢,我们看个例子:

index.html

CSS Code复制内容到剪贴板
  1. <styletype="text/css">
  2. .hd{
  3. color:orange;
  4. }
  5. @import"import.css";
  6. </style>
  7. ...
  8. <pclass="hd">我是什么颜色</p>
  9. import.css
  10. .hd{
  11. color:blue;
  12. }

测试发现,p的颜色并不是import.css里所定义的蓝色,而是之前定义的橘黄色。打开网络请求会发现没有请求import.css文件,这正是因为,再次强调一遍,import规则一定要先于除了@charset的其他任何CSS规则,所以需要将index.html改成酱紫:

CSS Code复制内容到剪贴板
  1. <styletype="text/css">
  2. @import"import.css";
  3. .hd{
  4. color:orange;
  5. }
  6. </style>
  7. ...
  8. <pclass="hd">我是什么颜色</p>

这时候能看到import.css网络请求,p的颜色为橘黄色,覆盖了import.css里定义的蓝色。
媒体查询

@import和link一样,同样可以定义媒体查询(media queries),我们先看看link定义的方式:

CSS Code复制内容到剪贴板
  1. <linkrel="stylesheet"type="text/css"rel="nofollow noopener noreferrer" href="print.css"media="print"/>

接下来是@import:

CSS Code复制内容到剪贴板
  1. @importurl("print.css")print;
  2. @import"common.css"screen,projection;
  3. @importurl('landscape.css')screenand(orientation:landscape);
  4. @importurl('mobile.css')(max-width:680px);

这里要注意的是,不论是link还是import方式,会下载所有css文件,然后根据媒体去应用css样式,而不是根据媒体去选择性下载css文件。
不要使用@import

这。。坑爹呢,看了一大堆,结果告诉我不要使用!
这也只是个建议,因为import的确会带来一些问题,所以网络上会有各种「抵制@import」的文章,既然设计了@import,总有它的有用之处,不能过于绝对。使用@import影响页面性能的地方主要体现在两个方面:

影响浏览器的并行下载
多个@import导致下载顺序紊乱

到此这篇关于深入理解CSS中的@import就介绍到这了。缺乏一种自信的精神,这往往导致一些本来是萌芽了的天才走向自我扼杀。更多相关深入理解CSS中的@import内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

标签: CSS import