DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> CSS詳解 >> 單獨對IE6兼容進行處理的方法揭秘
單獨對IE6兼容進行處理的方法揭秘
編輯:CSS詳解     

你對單獨對IE6兼容進行處理的方法是否了解,這裡和大家分享一下,IE6兼容的第一步就是單獨對IE進行兼容,你針對IE6所寫的代碼只影響IE6。

單獨對IE6兼容進行處理的方法

IE6兼容的第一步就是單獨對IE進行兼容,你針對IE6所寫的代碼只影響IE6;有幾種方法可以區分開IE6:IE特有條件注釋、CSS選擇器、JavaScript,我們將逐一討論。

使用IE特有條件注釋

微軟給IE添加了條件注釋以區分不同版本,任何東西都可以塞進條件注釋裡:標簽、JavaScript、JS文件、CSS、內聯樣式。可以使用條件注釋來針對某一個IE浏覽器版本來編寫代碼。

規則如下:(譯注:可參考IE特有注釋(hack))

這段文字會在所有浏覽器顯示

  1. <!--[iflteIE6]>

這段文字僅顯示在IE6及IE6以下版本。

  1. ThismessagewillonlyappearinversionsofInternetExplorerlessthanorequaltoversion6.
  2. <![endif]-->
  3. <!--[ifgteIE6]>

這段文字僅顯示在IE6及IE6以上版本。

  1. ThismessagewillonlyappearinversionsofInternetExplorergreaterthanorequaltoversion6.
  2. <![endif]-->
  3. <!--[ifgtIE6]>

這段文字僅顯示在IE6以上版本(不包含IE6)。

  1. ThismessagewillonlyappearinversionsofInternetExplorergreaterthanversion6.
  2. <![endif]-->
  3. <!--[ifIE5.5]>

這段文字僅顯示在IE5.5。

  1. ThismessagewillonlyappearinInternetExplorer5.5.
  2. <![endif]-->
  3. <!--在IE6及IE6以下版本中加載CSS-->
  4. <!--[iflteIE6]>
  5. [*]
  6. <![endif]-->

這段文字會在所有浏覽器顯示

使用條件注釋加載css的好處是這些樣式是獨立於其他CSS文件的,因此不會在編寫兼容代碼時弄得一團糟;而且當IE6的市場份額降低到不需要兼容時,可以快速的清理掉。

使用條件注釋的唯一缺點是在IE浏覽器下會增加額外的HTTP請求數,所以需要權衡是否這樣做。但我不建議使用條件注釋加載外部js文件,因為js文件會造成阻滯,在js未加載完之前其余文件都不會被加載;對於JS請使用JavaScript程序來區分浏覽器而非條件注釋。

使用CSS選擇器區分開IE6

如果你不打算使用條件注釋,CSS選擇器是另外一個區分開IE6的辦法,IE6兼容不支持子選擇器;先針對IE6使用常規申明CSS選擇器,然後再用子選擇器針對IE7+及其他浏覽器。

示例:

  1. <styletypestyletype="text/CSS">
  2. /*IE6專用*/
  3. .content{color:red;}
  4. /*其他浏覽器*/
  5. div>p.content{color:blue;}
  6. </style>
  7. <div>
  8. <pclasspclass="header">SomeHeaderTextHere
  9. </div>

這個方法的缺點是容易把樣式表弄得一團糟,所以一定要寫好注釋說明。
在示例中,針對IE6寫的樣式在其他浏覽器中也會執行,但(標准浏覽器中)之後的子選擇器覆蓋了之前的申明,而IE6兼容不支持子選擇器所以忽略了它。

使用JavaScript區分開IE6

如果你想要使用JavaScript區分開IE6,請看示例:

  1. //原生JavaScript
  2. if(typeofdocument.body.style.maxHeight==="undefined"){
  3. alert('IE6Detected');
  4. }
  5. //MooTools(框架)
  6. if(Browser.Engine.trident4){
  7. alert('IE6Detected');
  8. }
  9. //jQuery(框架)
  10. if(($.browser.msIE)&&($.browser.version=="6.0")){
  11. alert('IE6Detected');
  12. }

譯者來源:http://www.vfresh.org/w3c/727

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved