解決IE5/IE5.5/IE6/FF的兼容性問題——CSS
更新時間:2007年05月28日 00:00:00 作者:
轉(zhuǎn)自 藍(lán)色理想
作者 bias
原文地址 http://www.blueidea.com/tech/site/2006/3296.asp
之前找了幾個不同版本的可獨立運行的IE瀏覽器,正好拿來試試頁面的兼容性問題。不試不知道,在IE6和FF中沒問題的頁面在IE5和IE5.5中亂成一團(tuán),一直聽說IE5是WEB標(biāo)準(zhǔn)制作的一個“釘子戶”,現(xiàn)在不得不相信了。
既然有問題,那就找找解決的方法咯,在網(wǎng)上一搜,相關(guān)的文章還是不少的,覺得最直接的方法還是“IE條件注釋”,很方便的就能為IE的不同版本寫樣式。但這樣就得為每個版本寫一個樣式,不利于文件的優(yōu)化。
找了一些相關(guān)的CSS HACK后,覺得應(yīng)該可以把IE5/IE5.5/IE6/FF的HACK寫到一起的,經(jīng)過測試,終于找到了一個不錯的方法,下面我們來看看怎么實現(xiàn):
大家都知道用!important聲明可以提升指定樣式規(guī)則的應(yīng)用優(yōu)先權(quán),如下面的例子:
-------------------------------------------------
E1{
background-color: red !important;/*提升優(yōu)先權(quán)*/
background-color: blue;
}
-------------------------------------------------
但這樣寫在IE中會有個問題,看過我的《關(guān)于CSS樣式表優(yōu)先級》和《關(guān)于CSS樣式表優(yōu)先級補(bǔ)遺》,你會知道在IE6和FF中用!important聲明可以提高優(yōu)先級別,但在IE6中的!important聲明并不是絕對的,它會被之后的同名屬性定義所替換。也就是說在上面的例子中,IE6所應(yīng)用的是最后一個背景色的值,即“blue”;而在FF中背景色的值為“red”。根據(jù)這一點,我們就可以把FF和IE的樣式分離開。
OK ,解決了FF和IE的問題,現(xiàn)在來解決IE自己的問題。
看過了嘟嘟的《繞過IE6支持IE5的別一種寫法-IE也支持">"》后有感而發(fā),使用“>”IE是否真的可以認(rèn)得?我們來看個例子:
-------------------------------------------------
E1{
background-color: red;
>background-color: blue;
}
-------------------------------------------------
在FF中得到的是背景色紅色,而在IE中得到的背景色是藍(lán)色,根據(jù)樣式重定義的規(guī)則,如果瀏覽器可以識別“>”,則應(yīng)該得到的藍(lán)色的背景,因此可以知道“>”只有IE可以識別,這點是很重要的哦!在后面大家就會知道了。(注:我測試過其它的一些符號,如“~”、“`”、“<”等,都只有IE可以識別,在此為了感謝嘟嘟,推薦使用“>”)
我們再來看個例子:
-------------------------------------------------
E1{
>/*IE only*/background-color: black;
>/*IE only*/background-color /*IE5.5*/: green;
}
-------------------------------------------------
這個例子在IE6中得到了黑色的背景;而在IE5.5中得到的綠色的背景;在IE5中也得到了黑色的背景。這就說明了第二句定義只有IE5.5能識別,這是個很早就公布的HACK,可以在網(wǎng)上找到相關(guān)的資料,要注意的就是在屬性名之后是有一個空格的。到此我們已經(jīng)把FF、IE5.5、IE6分離出來了,那IE5呢?其實現(xiàn)在我們只要把IE5跟IE6分開就OK了,來看看例子:
-------------------------------------------------
E1{
>/*IE only*/background-color: red;/*IE5*/
}
E1/*IE5.5+*/{
>/*IE only*/background-color: black;
}
-------------------------------------------------
這里我們又用到一個HACK,就是“E1/**/{}”,這個定義在IE5以上的版本才能識別出來。這個例子得到的結(jié)果是,在IE5中的背景色為紅色;在IE5以上版本中得到的是黑色背景。
終于把不同版本的瀏覽器都分離出來了,這樣我們就可以為不同的瀏覽器定義不同的樣式了。來看個完整的例子:
-------------------------------------------------
E1{
width: 500px;
height: 50px;
background-color: red !important;/*FF*/
background-color: blue;/*IE5*/
text-align:center;
}
E1/*IE5.5+*/{
>/*IE only*/background-color: black;/*IE6*/
>/*IE only*/background-color /*IE5.5*/: green;
}
-------------------------------------------------
需要注意的是,在上面例子中“background-color”定義的順利不能改變,即FF-IE5-IE6-IE5.5。對于IE的定義在屬性前要加“>”,因為“E1/**/{}”這個HACK在FF中可以識別。也許你會想,上面的例子不是可以寫成:
-------------------------------------------------
E1{
width: 500px;
height: 50px;
background-color: red;/*FF*/
>background-color: blue;/*IE5*/
text-align:center;
}
E1/*IE5.5+*/{
>/*IE only*/background-color: black;/*IE6*/
>/*IE only*/background-color /*IE5.5*/: green;
}
-------------------------------------------------
這樣不就又可以省下幾個字節(jié)?是沒錯,可是HACK不是標(biāo)準(zhǔn),如果濫用HACK,那只會離標(biāo)準(zhǔn)越來越遠(yuǎn)!
作者 bias
原文地址 http://www.blueidea.com/tech/site/2006/3296.asp
之前找了幾個不同版本的可獨立運行的IE瀏覽器,正好拿來試試頁面的兼容性問題。不試不知道,在IE6和FF中沒問題的頁面在IE5和IE5.5中亂成一團(tuán),一直聽說IE5是WEB標(biāo)準(zhǔn)制作的一個“釘子戶”,現(xiàn)在不得不相信了。
既然有問題,那就找找解決的方法咯,在網(wǎng)上一搜,相關(guān)的文章還是不少的,覺得最直接的方法還是“IE條件注釋”,很方便的就能為IE的不同版本寫樣式。但這樣就得為每個版本寫一個樣式,不利于文件的優(yōu)化。
找了一些相關(guān)的CSS HACK后,覺得應(yīng)該可以把IE5/IE5.5/IE6/FF的HACK寫到一起的,經(jīng)過測試,終于找到了一個不錯的方法,下面我們來看看怎么實現(xiàn):
大家都知道用!important聲明可以提升指定樣式規(guī)則的應(yīng)用優(yōu)先權(quán),如下面的例子:
-------------------------------------------------
復(fù)制代碼 代碼如下:
E1{
background-color: red !important;/*提升優(yōu)先權(quán)*/
background-color: blue;
}
-------------------------------------------------
但這樣寫在IE中會有個問題,看過我的《關(guān)于CSS樣式表優(yōu)先級》和《關(guān)于CSS樣式表優(yōu)先級補(bǔ)遺》,你會知道在IE6和FF中用!important聲明可以提高優(yōu)先級別,但在IE6中的!important聲明并不是絕對的,它會被之后的同名屬性定義所替換。也就是說在上面的例子中,IE6所應(yīng)用的是最后一個背景色的值,即“blue”;而在FF中背景色的值為“red”。根據(jù)這一點,我們就可以把FF和IE的樣式分離開。
OK ,解決了FF和IE的問題,現(xiàn)在來解決IE自己的問題。
看過了嘟嘟的《繞過IE6支持IE5的別一種寫法-IE也支持">"》后有感而發(fā),使用“>”IE是否真的可以認(rèn)得?我們來看個例子:
-------------------------------------------------
E1{
background-color: red;
>background-color: blue;
}
-------------------------------------------------
在FF中得到的是背景色紅色,而在IE中得到的背景色是藍(lán)色,根據(jù)樣式重定義的規(guī)則,如果瀏覽器可以識別“>”,則應(yīng)該得到的藍(lán)色的背景,因此可以知道“>”只有IE可以識別,這點是很重要的哦!在后面大家就會知道了。(注:我測試過其它的一些符號,如“~”、“`”、“<”等,都只有IE可以識別,在此為了感謝嘟嘟,推薦使用“>”)
我們再來看個例子:
-------------------------------------------------
E1{
>/*IE only*/background-color: black;
>/*IE only*/background-color /*IE5.5*/: green;
}
-------------------------------------------------
這個例子在IE6中得到了黑色的背景;而在IE5.5中得到的綠色的背景;在IE5中也得到了黑色的背景。這就說明了第二句定義只有IE5.5能識別,這是個很早就公布的HACK,可以在網(wǎng)上找到相關(guān)的資料,要注意的就是在屬性名之后是有一個空格的。到此我們已經(jīng)把FF、IE5.5、IE6分離出來了,那IE5呢?其實現(xiàn)在我們只要把IE5跟IE6分開就OK了,來看看例子:
-------------------------------------------------
E1{
>/*IE only*/background-color: red;/*IE5*/
}
E1/*IE5.5+*/{
>/*IE only*/background-color: black;
}
-------------------------------------------------
這里我們又用到一個HACK,就是“E1/**/{}”,這個定義在IE5以上的版本才能識別出來。這個例子得到的結(jié)果是,在IE5中的背景色為紅色;在IE5以上版本中得到的是黑色背景。
終于把不同版本的瀏覽器都分離出來了,這樣我們就可以為不同的瀏覽器定義不同的樣式了。來看個完整的例子:
-------------------------------------------------
E1{
width: 500px;
height: 50px;
background-color: red !important;/*FF*/
background-color: blue;/*IE5*/
text-align:center;
}
E1/*IE5.5+*/{
>/*IE only*/background-color: black;/*IE6*/
>/*IE only*/background-color /*IE5.5*/: green;
}
-------------------------------------------------
需要注意的是,在上面例子中“background-color”定義的順利不能改變,即FF-IE5-IE6-IE5.5。對于IE的定義在屬性前要加“>”,因為“E1/**/{}”這個HACK在FF中可以識別。也許你會想,上面的例子不是可以寫成:
-------------------------------------------------
E1{
width: 500px;
height: 50px;
background-color: red;/*FF*/
>background-color: blue;/*IE5*/
text-align:center;
}
E1/*IE5.5+*/{
>/*IE only*/background-color: black;/*IE6*/
>/*IE only*/background-color /*IE5.5*/: green;
}
這樣不就又可以省下幾個字節(jié)?是沒錯,可是HACK不是標(biāo)準(zhǔn),如果濫用HACK,那只會離標(biāo)準(zhǔn)越來越遠(yuǎn)!
您可能感興趣的文章:
相關(guān)文章
轉(zhuǎn)載未知大小的圖片在一個已知大小容器中的水平和垂直居中(二)
轉(zhuǎn)載未知大小的圖片在一個已知大小容器中的水平和垂直居中(二)...2007-01-01用css alpha 濾鏡 實現(xiàn)input file 樣式美化代碼
用css alpha 濾鏡 實現(xiàn)input file 樣式美化代碼...2007-12-12《CSS3實戰(zhàn)》筆記--漸變設(shè)計(二)
這篇文章主要介紹了《CSS3實戰(zhàn)》筆記--漸變設(shè)計(二,需要的朋友可以參考下2016-05-05使用display:none時隱藏DOM元素?zé)o法獲取實際寬高的解決方法
這篇文章主要介紹了使用display:none時隱藏DOM元素?zé)o法獲取實際寬高的解決方法的相關(guān)資料,需要的朋友可以參考下2022-07-07div+css實現(xiàn)的滑動門,簡潔,新手上路 (小鴿子系列)
div+css實現(xiàn)的滑動門,簡潔,新手上路 (小鴿子系列)...2007-03-03