調用css時,用link 和 @import url 有什麼區別

1、基本簡介

@import版本:CSS1/CSS2  兼容性:IE4+

語法:
@importurl (url)sMedia;
取值:
url (url) : 使用絕對或相對url地址指定導入的外部樣式表文件。請參閱link對象
sMedia : 未支持。指定設備類型。請參閱附錄:設備類型
說明:
指定導入的外部樣式表及目標設備類型。此規則無默認值。
此規則其後的分號是必需的,如果省略了此分號,外部樣式表將無法正確導入,並會生成錯誤信息。url ()是可選的。
此規則像link對象一樣,鏈接一個外部樣式表到文檔。用此規則導入的樣式表,其owningElement特性是一個link對象或style對象。
此規則必須出現在樣式表內的任何聲明之前。雖然IE4.0+允許此規則出現在樣式表定義的任何位置,但是此規則導入的樣式定義將在內部樣式表之前作用。這個定義順序會影響您預期的結果。
導入的外部樣式表中的定義會被文檔中的定義覆蓋。
示例:
@import url("foo.css") screen, print;
@import "print.css";
@import url(print.css);

2、@import和css link的異同

加載css link與@import的區別:

其實 link 與 @import 在顯示效果上還是有很大區別的,基本上來看 link 的加在會在頁面顯示之前全部加在完全,而 @import 會是讀取完文件之後加在,所以如果網速很好或很快的情況下,會出現先開始無css定義,而後加載css定義。@import加載頁面時開始的瞬間會有閃爍(無樣式表的頁面),然後才恢復正常(加載樣式後的頁面),Link沒有這個問題。

他們從方法上是一樣的,只是在瀏覽器識別上有點差距,link在支持CSS的瀏覽器上都支持而@import只在5.0以上的版本有效,而且還能用於瀏覽器過濾也就是hack的使用,兼容一些老版本的瀏覽器。所以最好還是使用link通用型更強,但是對於高版本的瀏覽器,也就是現在的瀏覽器來說,其實都一樣,這是個沒有太大意義的區分 。

例外一個說明:

@import url(/css/a.css) 很簡單但出現了兼容問題,在ff下無法調用樣式,大家都以爲是@import搞的怪,但用link後問題依然出現。經過一番討論原來是絕對路徑在ff下是不認的。


下面對@import url()做一下總結:

1,@import url()機制是不同於link的,link是在加載頁面前把css加載完畢,而@import url()則是讀取完文件後在加載,所以會出現一開始沒有css樣式,閃爍一下出現樣式後的頁面(網速慢的情況下)。

2,@import 是css2裏面的,所以古老的ie5不支持。

3,當使用javascript控制dom去改變樣式的時候,只能使用link標籤,因爲@import不是dom可以控制的。

4,link除了能加載css外還能定義RSS,定義rel連接屬性,@import只能加載css

所以我認爲結合來使用就最好,比如:<link href="css/main.css" rel="stylesheet" type="text/css">

引用了一個main.css文件,在main.css裏面再引用@import url(footer.css);@import url(head.css);

這樣達到一個清晰明瞭的作用.

3、總結


1、在一個樣式文件中使用@import會爲頁面總體加載時間增加更多一個返程(也就是增加頁面的總體加載時間)


2、在IE中使用@import 將會引起文件的下載順序被改變。這更會引起樣式文件花費更長的時間來下載,這會阻礙頁面的渲染,讓人感到頁面比較慢。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章