Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 使用链接标签还是样式标签来导入CSS更好?_Html_Css_Performance - Fatal编程技术网

Html 使用链接标签还是样式标签来导入CSS更好?

Html 使用链接标签还是样式标签来导入CSS更好?,html,css,performance,Html,Css,Performance,还是仅仅是个人喜好?我想说的是,使用这两种方法都有特殊的好处吗 <link href="main.css" rel="stylesheet" type="text/css"> 对 <style type="text/css"> @import url('main.css'); </style> @导入url('main.css'); 短版本@import在旧浏览器中不受支持,在某些情况下,某些常用浏览器(IE6和IE7)存在问题,在不同的浏览器中工作

还是仅仅是个人喜好?我想说的是,使用这两种方法都有特殊的好处吗

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

<style type="text/css">
@import url('main.css');
</style>

@导入url('main.css');

短版本
@import
在旧浏览器中不受支持,在某些情况下,某些常用浏览器(IE6IE7)存在问题,在不同的浏览器中工作时可能表现不同,与
相比没有优势

长版本?您希望使用
,但有两种情况(现在大多数情况下是不相关的)使用
@import
是有意义的。发件人:

最常见的使用原因是 @改为导入(或与一起导入) 是因为旧的浏览器没有 识别@import,这样你就可以隐藏 他们的风格

这是关于对IE4隐藏东西,这就是为什么我说“大部分是不相关的”。其中一个案例对IE6隐藏了一些东西,但最好是用IE6

一个更现代(和相关)的比较是:

Internet Explorer(你知道它会来的 (最终)处理得不好 指定媒体类型–它会阻塞。 基本上,IE(版本4-7)尝试 阅读媒体类型,就像它是一部分一样 文件名,导致整个 事情要崩溃了。像这样的 如果你不想你的CSS有一个 默认媒体类型为“全部”,您可以 也许最好使用 标签和标签的组合 导入–在中指定媒体类型 您的链接,然后导入 在您要创建的文件中使用适当的CSS 链接到。我还没听说IE8 遭受同样的问题(如果您 碰巧知道,请给我点化一下 评论!)

另一个消息来源是雅虎:

以前的最佳实践之一 声明CSS应该位于顶部 为了允许进步 渲染

在IE中,
@import
的行为与 在页面底部使用 页面,所以最好不要使用它

但是没有真正解释原因(因此之前的链接)。

根据雅虎的说法,总是使用
而不是
@import
。有关更多详细信息,请参阅

在IE中(在6、7和8日测试),
@import
使样式表 按顺序下载。正在下载 并行的资源是一个系统的关键 更快的页面。IE中的这种行为 导致页面花费更长的时间 结束


使用
允许浏览器打开其他连接,从而减少加载时间。

事实上,如果我记得您使用多个css文件时,就会出现问题。然后,如果您在css文件中使用@import,则会导致IE在使用标记时按顺序而不是并行地下载css文件。并行下载速度更快,因为两个或多个文件同时下载。这里有更多的解释:斯特拉格,你说得对。如果您是@import-ing并且省略了换行符,那么就html文档的大小而言,这两个换行符是完全相同的。通过在main.css文档中创建链接或@import,然后@import和其他css,您可以获得收益。Cletus,看起来你在@import导致浏览器按顺序而不是在一个单独的请求中并行下载CSS这一点上部分是正确的(参见William Brendel的回复)。我不认为缓存实际上是一个问题(不再是了?),这个答案对我来说更有意义。除此之外,InternetExplorer5及以下版本根本不会解析@import——这是一些老黑客用来定义额外规则的地方