css hack,hack
屬性首碼
_僅支援ie6
* ie6 ie7
\9 ie6+
\0 ie8+
\9\0 ie9+
color:#00F\0; /* IE8支援*/*color:#FF0; /* IE7支援 */_color:#F00; /* IE6支援 */不管是什麼方法,書寫的順序都是firefox的寫在前面,IE7的寫在中間,IE6的寫在最後面。補充:IE6能識別 *,但不能識別 !important,IE7能識別 *,也能識別!important;FF不能識別 *,但能識別!important;底線”_“,IE6支援底線,IE7和firefox均不支援底線[1] 。選取器首碼法(即選取器Hack):例如 IE6能識別*html .class{},IE7能識別*+html .class{}
background-color:blue; 各個瀏覽器都認識,這裡給firefox用;
background-color:red\9;\9所有的ie瀏覽器可識別;
background-color:yellow\0; \0 是留給ie8的,最新版opera也認識,後面自有hack寫了給opera認的,所以,\0我們就認為是給ie8留的;
+background-color:pink; + ie7定了;
_background-color:orange; _專門留給神奇的ie6;
以: " #demo {width:100px;} "為例;#demo {width:100px;} /*被FIREFOX,IE6,IE7執行.*/* html #demo {width:120px;} /*會被IE6執行,之前的定義會被後來的覆蓋,所以#demo的寬度在IE6就為120px; */*+html #demo {width:130px;} /*會被IE7執行*/所以最後,#demo的寬度在三個瀏覽器的解釋為: FIREFOX:100px; ie6:120px; ie7:130px;
.title{ height:200px;
*height:200px !important;/*因為ie6不支援!important ,所以只識別ie7*/
*height:200px; }/*識別ie6*/
條件注釋法
這種方式是IE瀏覽器專有的Hack方式,微軟官方推薦使用的hack方式。舉例如下
只在IE下生效<!--[if IE]>這段文字只在IE瀏覽器顯示<![endif]-->只在IE6下生效<!--[if IE 6]>這段文字只在IE6瀏覽器顯示<![endif]-->只在IE6以上版本生效<!--[if gte IE 6]>這段文字只在IE6以上(包括)版本IE瀏覽器顯示<![endif]-->只在IE8上不生效<!--[if ! IE 8]>這段文字在非IE8瀏覽器顯示<![endif]-->非IE瀏覽器生效<!--[if !IE]>這段文字只在非IE瀏覽器顯示<![endif]-->