@importTLNR
<link> 属于 XHTML 标签,而 @import 完全是 CSS 提供的一种方式。<link> 引用的 CSS 会同时被加载;@import 会等页面「全部被下载完」再被加载。@import 必须将它放到样式代码的最前面,否则不起作用。<link> 和 @import,在 IE 中,會影響並行下載。<link> 內嵌 @import,在「所有浏览器」都「不能並行下載」。@import 和 <link> 區別http://www.dreamdu.com/blog/2007/05/11/css_link_import/
<link> 属于 XHTML 标签,而 @import 完全是 CSS 提供的一种方式。<link> 引用的 CSS 会同时被加载;@import 会等到页面「全部被下载完」再被加载。<link> 标签,因为 @import 不是 dom。@import 是 CSS2.1 提出的,IE5 以後才能识别,而 <link> 标签无此问题。@import(引入) 其他样式表,但這樣會產生过多的 HTTP 请求。29 April 2009
作者測試 <link> vs. @import兩個方式載入相同的檔案,並用 develop-tool 觀察兩個方式的效能。
網站文章有圖和中文說明,文字有連結,點入可以進入測試網站,用 developBar 的 Network 檢視狀況!
@import:@import @import<!-- html -->
<style>
@import url('a.css');
@import url('b.css');
</style>
@import 是可以的<link> 和 @import:link @import<!-- html -->
<link href="a.css" rel="stylesheet" type="text/css">
<style>
@import url('b.css');
</style>
<link> 與 @import 不能同時下载,在 IE 中 (在 6, 7, 和 8 中测试过) 須逐個下載。// @import 會等到页面「全部被下载完再被加载」
<link> 內嵌 @import:link with @import<!-- html -->
<link href="a.css" rel="stylesheet" type="text/css">
/* a.css */
@import url('b.css');
// 因為是內砍,會先做完自身第一層,再做 @import 第二層?
// 浏览器必须下载 "a.css" 先、分析它,这个时候,浏览器发现了 @import 规则。下載完 "a.css" 后才会开始加载 "b.css"。
<link> 和 <link> 內嵌 @import:link blocks @import<!-- html -->
<link href="a.css" rel="stylesheet" type="text/css">
<link href="proxy.css" rel="stylesheet" type="text/css">
/* proxy.css */
@import url('b.css');
@import:many @imports<!-- html -->
<style>
@import url('a.css');
@import url('b.css');
@import url('c.css');
@import url('d.css');
@import url('e.css');
@import url('f.css');
</style>
<script src="one.js" type="text/javascript"></script>
这个例子有 6 个样式表 (每个将花两秒钟的下载时间);
后面跟着一个 js 脚本文件 (需要四苗种下载),但在 IE 中,它被首先下载。
@import 会以不同於预期的顺序下载。 <link>:link link<!-- html -->
<link href="a.css" rel="stylesheet" type="text/css">
<link href="b.css" rel="stylesheet" type="text/css">
<link> 确保在所有的浏览器里面都能并行下载,也能按照开发人员制定的顺序下载<link> 內嵌多個 @import 和直接用多个 <link> 載入檔案比較,
每个例子都插入 4 个样式文件到 HTML 文件中。
<link> 內嵌多個 @import:link with @importshtml 中使用 <link> 加载 "proxy.css"
<!-- html -->
<link href="proxy.css" rel="stylesheet" type="text/css">
proxy.css 中使用 @import 加载 4 个样式文件。
/* proxy.css */
@import url('a.css');
@import url('b.css');
@import url('c.css');
@import url('d.css');
<link>:many links<!-- html -->
<link href="a.css" rel="stylesheet" type="text/css">
<link href="b.css" rel="stylesheet" type="text/css">
<link href="c.css" rel="stylesheet" type="text/css">
<link href="d.css" rel="stylesheet" type="text/css">
問題 1.
<link> 是立即同时下载。問題 2.
我在页面最底部添加了一个 10 秒的脚本(图中最长的条条)。
在「非 IE 」浏览器:
@import 样式文件 ( "proxy.css" 文件中引入) 首先下载,然后才是脚本文件,严格的按照指定的顺序。
在 IE:
脚本却先于 @import 样式被下載,如前面例子那样。
然而在样式文件没有下载完之前,IE 不会在页面中渲染任何内容。
以这种方式来使用 @import 12 秒钟。
使用 <link> 替代 @import,页面渲染只需要 4 秒钟。