西西軟件下載最安全的下載網站、值得信賴的軟件下載站!

首頁編程開發(fā)其它知識 → CSS hack是什么?IE6\7\8\9\10瀏覽器的CSS hack大全介紹

CSS hack是什么?IE6\7\8\9\10瀏覽器的CSS hack大全介紹

前往專題相關軟件相關文章發(fā)表評論 來源:百度搜索時間:2012/11/5 10:59:01字體大。A-A+

作者:西西點擊:3次評論:1次標簽: CSS

CSS hack由于不同的瀏覽器,比如Internet Explorer 6,Internet Explorer 7,Mozilla firefox等,對CSS的解析認識不一樣,因此會導致生成的頁面效果不一樣,得不到我們所需要的頁面效果。 這個時候我們就需要針對不同的瀏覽器去寫不同的CSS,讓它能夠同時兼容不同的瀏覽器,能在不同的瀏覽器中也能得到我們想要的頁面效果。

這個針對不同的瀏覽器寫不同的CSS code的過程,就叫CSS hack!

目前IE內核瀏覽器仍然是國內主流瀏覽器,占據著PC瀏覽器的大部分市場份額,版本從IE6到IE10,所有前段工作者都必須面對和解決多個ie瀏覽器對代碼的兼容性問題。在很多情況下,我們需要專門針對IE寫css樣式,即針對IE的css hack,下面將詳細介紹這些內容:

1、常見的特殊符號的應用:

IE6:

_selector{property:value;}

selector{property:value;property:value !important;} //IE6 不支持同一選擇符中的 !important

IE7:

+selector{property:value;}

IE8:

selector{property:value\0;}

IE6 & IE7:

*selector{property:value;}

IE6 & IE7 & IE8:

selector{property:value\9;}

總結起來,如下:

其中,S表示Standards Mode即標準模式,Q表示Quirks Mode,即兼容模式。

(了解更多Quirks模式、Strict(Standars)模式?)

hack示例IE6(S)IE6(Q)IE7(S)IE7(Q)IE8(S)IE8(Q)
**colorYesYesYesYesNoYes
++colorYesYesYesYesNoYes
--colorYesYesNoNoNoNo
__colorYesYesNoYesNoYes
##colorYesYesYesYesNoYes
\0color\0NoNoNoNoYesNo
\9color\9YesYesYesYesYesYes
!importantcolor:blue !important;
color:green;
NoNoYesNoYesNo

2、條件注釋語句(<!--[if IE]> <![endif]-->)

所有的IE可識別

僅IE6可識別

IE6以及IE6以上版本可識別

IE7以下版本可識別


lt 表示less than 當前條件版本以下的版本,不包含當前版本。

gte 表示greeter than or equal 當前版本以上版本,并包含當前版本。

lte 表示less than or equal 當前版本以下版本,并包含當前版本。

3、meta聲明

由于IE8 可能會將頁面按照 IE7 模式進行渲染,針對 多版本IE的現(xiàn)狀,通常會采用設置 X-UA-Compatible HTTP 頭的方式將頁面在IE中采用統(tǒng)一的渲染模式。

 //標準 IE7 模式
 //兼容 IE7 模式
//標準 IE 模式

4、其他(/*\**/注釋法)

網上也流傳著這樣一種ie hack方法

.color1{ color:#F00; color/*\**/:#00F /*\**/}/*IE6,IE7,IE8,FF,OP,SA識別*/
.color2{ color:#F00; color /*\**/:#00F /*\9**/}/*IE7,IE8,FF,OP,SA識別*/
.color3{ color:#F00; color/*\**/:#00F \9}/*IE6,IE7,IE8識別*/
.color4{ color:#F00; color /*\**/:#00F\9}/*IE7,IE8識別*//*“color”和“/*\**/”之間有個空格*/

分析下:
background-color:blue; 各個瀏覽器都認識,這里給firefox用;
background-color:red\9;\9所有的ie瀏覽器可識別;
background-color:yellow\0; \0 是留給ie8的,但筆者測試,發(fā)現(xiàn)最新版opera也認識,汗。。。不過且慢,后面自有hack寫了給opera認的,所以,\0我們就認為是給ie8留的;
+background-color:pink; + ie7定了;
_background-color:orange; _專門留給神奇的ie6;
:root #test { background-color:purple\9; } :root是給ie9的,網上流傳了個版本是 :root #test { background-color:purple\0;},呃。。。這個。。。,新版opera也認識,所以經筆者反復驗證最終ie9特有的為:root 選擇符 {屬性\9;}
@media all and (min-width:0px){ #test {background-color:black\0;} } 這個是老是跟ie搶著認\0的神奇的opera,必須加個\0,不然firefox,chrome,safari也都認識。。。
@media screen and (-webkit-min-device-pixel-ratio:0){ #test {background-color:gray;} }最后這個是瀏覽器新貴chrome和safari的。

好了就這么多了,特別注意以上順序是不可以改變的。css hack雖然可以解決個瀏覽器之間css顯示的差異問題,但是畢竟不符合W3C規(guī)范,我們平時寫css最好是按照標準來,這樣對我們以后維護也是大有好處的,實在不行再用。

區(qū)別不同瀏覽器的CSS hack寫法:

區(qū)別IE6與FF:
background:orange;*background:blue;

區(qū)別IE6與IE7:
background:green !important;background:blue;

區(qū)別IE7與FF:
background:orange; *background:green;

區(qū)別FF,IE7,IE6:
background:orange;*background:green !important;*background:blue;

注:IE都能識別*;標準瀏覽器(如FF)不能識別*;
IE6能識別*,但不能識別 !important,
IE7能識別*,也能識別!important;
FF不能識別*,但能識別!important;

 IE6IE7FF
*×
!important×


------------------------------------------------------
另外再補充一個,下劃線"_",
IE6支持下劃線,IE7和firefox均不支持下劃線。

 IE6IE7FF
*×
!important×
_××


于是大家還可以這樣來區(qū)分IE6,IE7,firefox
: background:orange;*background:green;_background:blue;

注:不管是什么方法,書寫的順序都是firefox的寫在前面,IE7的寫在中間,IE6的寫在最后面。

    相關評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    第 1 樓 江蘇鎮(zhèn)江電信 網友 客人 發(fā)表于: 2015/3/10 18:22:21
    烦烦烦

    支持( 0 ) 蓋樓(回復)

    發(fā)表評論 查看所有評論(1)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經過審核才能顯示)
    推薦文章

    沒有數(shù)據