我正在学习一些CSS来调整我的项目模板。我遇到了这个问题,但在网络上找不到明确的答案。在CSS中使用@import或link有区别吗?
使用@import
<style>@import url(Path To stylesheet.css)</style>
链接的使用
<link rel="stylesheet" href="Path To stylesheet.css">
最好的方法是什么?为什么呢?谢谢!
我正在学习一些CSS来调整我的项目模板。我遇到了这个问题,但在网络上找不到明确的答案。在CSS中使用@import或link有区别吗?
使用@import
<style>@import url(Path To stylesheet.css)</style>
链接的使用
<link rel="stylesheet" href="Path To stylesheet.css">
最好的方法是什么?为什么呢?谢谢!
Answers:
从理论上讲,它们之间的唯一区别@import
是CSS机制包含样式表和<link>
HTML机制。但是,浏览器对它们的处理方式不同,因此<link>
在性能方面具有明显的优势。
史蒂夫Souders的写了大量的博客文章比较两个的影响<link>
和@import
所谓的“(和各种人组合)不使用@import ”。这个头衔几乎可以说明一切。
雅虎!还提到它是他们的性能最佳实践之一(由Steve Souders合着):选择<link>
@import
另外,使用<link>
标签可以定义“ preferred”和备用样式表。您无法使用来做到这一点@import
。
今天没有什么实际区别,但是@import
旧版本的浏览器(Netscape 4等)无法正确处理,因此可以使用该@import
hack隐藏这些旧版本的浏览器的CSS 2规则。
同样,除非您支持真正的旧浏览器,否则没有区别。
但是,如果您是我,我会<link>
在HTML页面上使用该变体,因为它允许您指定诸如媒体类型(打印,屏幕等)之类的内容。
本文可能在这里有用:将CSS添加到HTML的4种方法:链接,嵌入,内联和导入
@import通常用于外部样式表,而不是像您的示例中的内联。如果您确实想从非常老的浏览器中隐藏样式表,则可以将其用作一种技巧,以防止它们使用该样式表。
总体而言,<link>
标签的处理速度比@import规则的处理速度更快(就CSS处理引擎而言,@import规则显然较慢)。
Microsoft Internet Explorer 9(MSIE9)似乎无法正确处理@import。从我的Apache日志中观察这些条目(IP地址已隐藏,但whois
表示它归Microsoft自己所有):链接到screen.css的主要HTML
@import url("print.css") print;
@import url("speech.css") aural;
现在我将要更改为link
HTML中的元素,因为MSIE9似乎向服务器发出了两个不正确的请求,出现了404错误,而我却不能这样做:
[ip] - - [21/Dec/2019:05:49:28 +0000] "GET /screen.css HTTP/1.1" 200 2592 "https://ssb22.user.srcf.net/zhimo/"; "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Trident/5.0)" ssb22.user.srcf.net
[ip] - - [21/Dec/2019:05:49:28 +0000] "GET /url(%22print.css%22)%20print HTTP/1.1" 404 7498 "https://ssb22.user.srcf.net/zhimo/"; "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Trident/5.0)" ssb22.user.srcf.net
[ip] - - [21/Dec/2019:05:49:28 +0000] "GET /url(%22speech.css%22)%20aural HTTP/1.1" 404 7498 "https://ssb22.user.srcf.net/zhimo/"; "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Trident/5.0)" ssb22.user.srcf.net
还有人对这些文件正确的请求之后,但我们可以没有这个“拍在服务器首先,做解析url
后”的逻辑。