閱讀472 返回首頁    go 阿裏雲 go 技術社區[雲棲]


@import調用css與link調用css的區別

 

大家去分析一些大站的css代碼時,都會發現調用css有以下兩種方法:
 

方法一

<style type="text/css">
<!--
@import url("css/main.css");
@import url("css/font.css");
@import url("css/layout.css");
-->
</style>

 

方法二

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

那麼這兩各方法有什麼區別和優缺點呢?

 


差別1
老祖宗的差別。link屬於XHTML標簽,而@import完全是CSS提供的一種方式。link標簽除了可以加載CSS外,還可以做很多其它的事情,比如定義RSS,定義rel連接屬性等,@import就隻能加載CSS了。
 
 
差別2
加載順序的差別。當一個頁麵被加載的時候(就是被瀏覽者瀏覽的時候),link引用的CSS會同時被加載,而@import引用的CSS會等到頁麵全部被下載完再被加載。所以有時候瀏覽@import加載CSS的頁麵時開始會沒有樣式(就是閃爍),網速慢的時候還挺明顯(夢之都加載CSS的方式就是使用@import,我一邊下載一邊瀏覽夢之都網頁時,就會出現上述問題)。
 

差別3
兼容性的差別。由於@import是CSS2.1提出的所以老的瀏覽器不支持,@import隻有在IE5以上的才能識別,而link標簽無此問題。
 

 

差別4
使用dom控製樣式時的差別。當使用javascript控製dom去改變樣式的時候,隻能使用link標簽,因為@import不是dom可以控製的。

 

 

差別5
@import可以在css中再次引入其他樣式表,比如可以創建一個主樣式表,在主樣式表中再引入其他的樣式表,如:

main.css
———————-
@import “sub1.css”;
@import “sub2.css”;

sub1.css
———————-
p {color:red;}

sub2.css
———————-
.myclass {color:blue}

這樣更利於修改和擴展。

提示:這樣做有一個缺點,會對網站服務器產生過多的HTTP請求,以前是一個文件,而現在卻是兩個或更多文件了,服務器的壓力增大,瀏覽量大的網站還是謹慎使用。有興趣的可以觀察一下像新浪等網站的首頁或欄目首頁代碼,他們總會把css或js直接寫在html裏,而不用外部文件。

 

原帖地址:https://wintershan.javaeye.com/blog/579898

 

最後更新:2017-04-02 22:16:18

  上一篇:go .net項目編譯時,無法在證書存儲區中找到清單簽名證書
  下一篇:go 人人網技術架構的一偏文章