咱們知道,css文件引入方式有兩種:
1. HTML中使用link標籤css
<link rel="stylesheet" href="style.css" />
@import "style.css";
第一種方式最爲常見最爲主流,第二種方式則不多見到有人這麼寫,於是也常被開發工程師所忽略。這篇文章就詳細解剖之。html
@import語法有兩種:web
@import "style.css"; @import url("style.css");
這兩種語法並沒什麼差異。瀏覽器
MDN中這麼描述@import:網絡
The @import CSS at-rule allows to import style rules from other style sheets. These rules must precede all other types of rules, except @charset rules; as it is not a nested statement, it cannot be used inside conditional group at-rules.ide
注意到加粗的部分麼——import規則必定要先於除了@charset的其餘任何CSS規則,這句話是什麼意思呢,咱們看個例子:性能
index.html測試
<style type="text/css"> .hd{ color: orange; } @import "import.css"; </style> ... <p class="hd">我是什麼顏色</p>
import.css網站
.hd{ color: blue; }
測試發現,p的顏色並非import.css裏所定義的藍色,而是以前定義的橘黃色。打開網絡請求會發現沒有請求import.css文件,這正是由於,再次強調一遍,import規則必定要先於除了@charset的其餘任何CSS規則,因此須要將index.html改爲醬紫:url
<style type="text/css"> @import "import.css"; .hd{ color: orange; } </style> ... <p class="hd">我是什麼顏色</p>
這時候能看到import.css網絡請求,p的顏色爲橘黃色,覆蓋了import.css裏定義的藍色。
@import和link同樣,一樣能夠定義媒體查詢(media queries),咱們先看看link定義的方式:
<link rel="stylesheet" type="text/css" href="print.css" media="print"/>
接下來是@import:
@import url("print.css") print; @import "common.css" screen, projection; @import url('landscape.css') screen and (orientation:landscape); @import url('mobile.css') (max-width: 680px);
這裏要注意的是,不管是link仍是import方式,會下載全部css文件,而後根據媒體去應用css樣式,而不是根據媒體去選擇性下載css文件。
這。。坑爹呢,看了一大堆,結果告訴我不要使用!
這也只是個建議,由於import的確會帶來一些問題,因此網絡上會有各類「抵制@import」的文章,既然設計了@import,總有它的有用之處,不能過於絕對。使用@import影響頁面性能的地方主要體如今兩個方面:
具體能夠看看高性能網站設計:不要使用@import這篇文章,這裏就很少說,看完後記得回來點個贊或收藏:)。