1. 程式人生 > >全面相容IE6/IE7/IE8/FF的CSS HACK寫法

全面相容IE6/IE7/IE8/FF的CSS HACK寫法

瀏覽器市場的混亂,給設計師造成很大的麻煩,設計的頁面相容完這個瀏覽器還得相容那個瀏覽器,本來ie6跟ff之間的相容是很容易解決的。加上個ie7會麻煩點,ie8的出現就更頭疼了,原來hack ie7的方法又不能用了,怎麼辦呢?

第一種方法:

還好,微軟提供了這樣一個程式碼:

<meta http-equiv="x-ua-compatible" content="ie=7" />
把這段程式碼放到<head>裡面,在ie8裡面的頁面解析起來就跟ie7一模一樣的了,所以,基本上可以無視ie8,剩下的程式碼只需要這樣寫就可以了

background:#ffc; /*  對firefox有效*/
*background:#ccc; /* 對ie7有效 */
_background:#000; /* 只對ie6有效 */
解釋一下吧:

firefox能解析第一段,後面的兩個因為前面加了特殊符號“*”和“_”,firefox認不了,所以只認background:#ffc,看到的是黃色;

ie7前兩短都能認,以最後的為準,所以最後解析是background:#ccc,看到的是灰色;

ie6三段都能認,而且“_”這個只有ie6能認,所以最後解析是_background:#000,看到的是黑色

阿門!已經是最簡單和最好理解的寫法了,如果你是google進來的,我可以很負責任的告訴你,這種方法是ok的,我測試過。

ie8的那段相容7的程式碼我也測試過了,在我現在的windos 7 測試版所帶的ie8是沒問題的,以後ie8正式版出來還管不管用就不知道了。

ps:如果你發現按我這樣寫還是有問題的話,請檢視一下你的html頭,看看<head>之前的內容是不是這樣的標準寫法

XML/HTML程式碼
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml"
    >  
  3.   

 
這個是現在比較規範的寫法,如果你是用dreamweaver做頁面的話,預設也是這種規範的,切記,非這種規範寫法的,相容性不能保證

第二種方法:

要求苛刻的朋友是不願意在頁面頭部增加<meta http-equiv="x-ua-compatible" content="ie=7" />這樣一句程式碼的,因為這樣的結果是每個頁面都得加。那麼要想相容這幾個瀏覽器還真得想別的辦法了。早些天本站釋出了一篇《完美相容ie6,ie7,ie8以及firefox的css透明濾鏡》,可能當時測試的疏忽,IE8的相容性沒有解決好,好多朋友回覆說用不了。今天抽出些時間,查閱大量資料,終於解決了這個問題了。

以下是相容IE6/IE7/IE8/FF的寫法,注意下面的順序不可顛倒

CSS程式碼
  1. margin-bottom:40px;       /*ff的屬性*/  
  2. margin-bottom:140px9;    /* IE6/7/8的屬性 */  
  3. color:red;              /* IE8支援 */  
  4. *margin-bottom:450px;     /*IE6/7的屬性*/  

下面以一個例項的形式表現,大家可以執行程式碼檢視一下效果

XML/HTML程式碼
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. <title></title>  
  6. <style type="text/css">  
  7. #abc {   
  8.  border:2px solid #00f;     /*ff的屬性*/   
  9.  border:2px solid #0909;   /* IE6/7/8的屬性 */   
  10.  border:2px solid #F90;     /* IE8支援 */   
  11.  _border:2px solid #f00;     /*IE6的屬性*/   
  12.  }   
  13.  /*上下順序不可以寫錯*/   
  14.  </style>  
  15. </head>  
  16. <body>  
  17. <div id="abc">  
  18.   <ul>  
  19.     <li>FF下藍邊</li>  
  20.     <li>IE6下紅邊</li>  
  21.     <li>IE7下綠邊</li>  
  22.     <li>IE8下黃邊</li>  
  23.     <li>轉載請註明來源標準之路<a href=http://www.rainweb.cn>www.rainweb.cn</a></li>  
  24.   </ul>  
  25. </div>  
  26. </body>  
  27. </html>