一、什麼是CSS hack?css
CSS hack是經過在CSS樣式中加入一些特殊的符號,讓不一樣的瀏覽器識別不一樣的符號(什麼樣的瀏覽器識別什麼樣的符號是有標準的,CSS hack就是讓你記住這個標準),以達到應用不一樣的CSS樣式的目的,好比.kwstu{width:300px;_width:200px;},通常瀏覽器會先給元素使用width:300px;的樣式,緊接着後面還有個_width:200px;因爲下劃線_width只有IE6能夠識別,因此此樣式在IE6中實際設置對象的寬度爲200px,後面的把前面的給覆蓋了,而其餘瀏覽器不識別_width不會執行_width:200px;這句樣式,因此在其餘瀏覽器中設置對象的寬度就是300px;java
如下是引自百度文庫的定義web
注意:咱們一般主要考慮的瀏覽器有IE六、IE七、IE八、谷歌瀏覽器(chrome)、火狐(Mozilla Firefox)便可,至於咱們經常使用的傲遊、QQ的TT瀏覽器是用你計算機中裝的系統自帶瀏覽器的內核,因此只須要兼容以上瀏覽器便可兼容TT\傲遊瀏覽器。chrome
二、CSS hack解決問題瀏覽器
CSS hack用來解決有些css屬性在不一樣瀏覽器中顯示的效果不同的問題,如margin屬性在ie6中顯示的距離會比其餘瀏覽器中顯示的距離寬2倍,也就是說margin-left:20px;在ie6中距左側對象的實際顯示距離是40px,而在非ie6中顯示的距左側對象的距離是設置的值20px;因此要想設置一個對象距離左側對象的距離在全部瀏覽器中都顯示是20px的寬度的樣式應爲:.kwstu{margin-left:20px;_margin-left:20px;}。工具
從上圖能夠分析出如下幾種狀況:佈局
【區別符號】:「\9」、「*」、「_」測試
【區別符號】:「*」、「_」url
【區別符號】:「*」、「!important」firefox
【區別符號】:「*」、「!important」
#tip{
background:blue;/*Firefox背景變藍色*/
*background:green!important;/*IE7背景變綠色*/
}
【區別符號】:「*」、「_」
【區別符號】:「!important」
「_」
能夠看出,利用字符識別沒法區分IE8和IE9,咱們能夠從僞類的識別來區分
element{
color:#666\9; //IE8
* color:#999; //IE7
_color:#EBEBEB; //IE6
}
:root element{color:#666\9;}//IE9
@-moz-document url-prefix(){ .element{color:#f1f1f1;}} //Firefox