全文引自這里,很棒的一篇文章
-
what
由于不同廠商的瀏覽器或某瀏覽器的不同版本(IE6~IE11敞曹,F(xiàn)irefox/Safari/Opera/Chrome等)账月,對(duì)css的支持、解析不一樣澳迫。這時(shí)局齿,我們?yōu)榱双@得統(tǒng)一的頁(yè)面效果,就需要針對(duì)不同的瀏覽器或不同的版本寫特定的css樣式橄登,把這個(gè)針對(duì)不同瀏覽器/不同版本寫相應(yīng)的css code的過(guò)程叫做css hack抓歼。 -
how
由于不同的瀏覽器和瀏覽器的各版本對(duì)css的支持及解析結(jié)果不一樣,以及css優(yōu)先級(jí)對(duì)瀏覽器展現(xiàn)效果的影響拢锹,我們可以據(jù)此針對(duì)不同的瀏覽器情景應(yīng)用不同的css谣妻。
-
css hack 分類
有三種表現(xiàn)形式,css屬性前綴法卒稳,選擇器前綴法蹋半,以及IE條件注釋法。- 屬性前綴法(即類內(nèi)部hack)
- 選擇器前綴法
- IE條件注釋法
css hack一般是將適用范圍廣充坑,被識(shí)別能力強(qiáng)的css定義在前面减江。
- css hack方式一:條件注釋法(適用于IE10以下,IE10以后不再支持條件注釋)
- 條件注釋屬性:
- gt:greater than捻爷,選擇條件版本以上版本您市,不包含條件版本。
lt: less than 役衡,選擇條件版本以下版本茵休,不包含條件版本。
gte:greater than or equal 手蝎,選擇條件版本以上版本榕莺,包含條件版本。
lte:less than or equal 棵介,選擇條件版本以下版本钉鸯,包含條件版本。
S柿伞:選擇條件版本以外所有版本唠雕,無(wú)論高低贸营。
- gt:greater than捻爷,選擇條件版本以上版本您市,不包含條件版本。
- 實(shí)例
<div class="div5">非IE</div>
html腳本中平常的注釋方法``,條件注釋法只有IE10以下的IE瀏覽器可以識(shí)別岩睁,對(duì)于別的瀏覽器那么就只能看見(jiàn)的是一對(duì)封閉的不起作用的注釋钞脂。對(duì)于非IE 的注釋,注意里面有一個(gè)`
-
css hack方式二:類內(nèi)屬性前綴法
屬性前綴是在CSS樣式屬性名上加上一些只有特定瀏覽器才能識(shí)別的hack前綴捕儒,已達(dá)到預(yù)期的頁(yè)面展現(xiàn)效果冰啃。
以下討論的是標(biāo)準(zhǔn)模式中的hack方法 - 規(guī)則
*color:IE5.5、6刘莹、7
+color : IE5.5阎毅、6、7
#color : IE5.5点弯、6扇调、7
-color:IE5.5、6
_color: IE5.5抢肛、6
這幾個(gè)當(dāng)中肃拜,我喜歡用*與 _
color\0 : IE8、9雌团、10、11(12以上沒(méi)測(cè))(此處有些地方說(shuō)歐朋也識(shí)別士聪,可是我測(cè)試?yán)步踉还苡茫恢腊剥悟。?br> color\9 : IE6灵寺、7、8区岗、9略板、10(11不支持)
color\9\0:IE8、9慈缔、10(其他不支持)
\9\0取了共集
color:red!important;提高該設(shè)置的優(yōu)先級(jí) - css hack方式三:選擇器前綴法
- 規(guī)則
@media screen\9{……}(只對(duì)IE6叮称、7生效)
@media \0screen{……}(只對(duì)IE8生效)
@media \0screen,screen\9{……}(對(duì)IE6,7,8生效)
@media screen\0{……}(只對(duì)IE8、9藐鹤、10生效)
@media screen and (min-width:0\0){……}(只對(duì)IE9瓤檐,10有效)
@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){……}(對(duì)IE10,11有效,以上沒(méi)測(cè))
- hack 利弊
盡量避免使用css hack娱节,但有些情況下挠蛉,為了顧及用戶體驗(yàn)實(shí)現(xiàn)向下兼容,不得已才使用hack肄满。但過(guò)多使用會(huì)造成html文檔混亂不堪谴古,增加管理和維護(hù)的負(fù)擔(dān)质涛。