用條件注釋判斷瀏覽器版本解決頁(yè)面兼容問(wèn)題
發(fā)布時(shí)間:2014-05-04 11:01:28 作者:佚名
我要評(píng)論

在IE8、IE9上可能好好的,當(dāng)我們?cè)贗E6、IE7或者是其他的瀏覽器上再瀏覽這些頁(yè)面時(shí),可能會(huì)發(fā)現(xiàn)我們的頁(yè)面已經(jīng)面目全非了,那么如何解決兼容問(wèn)題呢,本文就為大家一一道來(lái)
對(duì)于瀏覽器兼容問(wèn)題,我們應(yīng)該碰到很多了,在平時(shí)寫(xiě)一些頁(yè)面時(shí),在IE8、IE9上可能好好的,當(dāng)我們?cè)贗E6、IE7或者是其他的瀏覽器上再瀏覽這些頁(yè)面時(shí),可能會(huì)發(fā)現(xiàn)我們的頁(yè)面已經(jīng)面目全非了,作為一名前端開(kāi)發(fā)人員,這是最讓人發(fā)瘋的問(wèn)題了,那么我們?cè)撛趺唇鉀Q這些問(wèn)題呢?
首先,我們寫(xiě)的頁(yè)面在不同的瀏覽器上之所以會(huì)出現(xiàn)表現(xiàn)不同的問(wèn)題,是因?yàn)椴煌臑g覽器在解析頁(yè)面時(shí),他們所遵循的規(guī)則并不是完全相同的。比如IE,不同的版本解析都不同,何況是不同的瀏覽器廠商,不同的內(nèi)核呢。但是我們?cè)谟龅郊嫒菪詥?wèn)題時(shí),應(yīng)該首先檢查我們自己寫(xiě)的代碼,看看是不是自己的問(wèn)題,然后再去追究瀏覽器的問(wèn)題。還有,在遇到兼容性問(wèn)題時(shí),不要?jiǎng)硬粍?dòng)就用CSS Hack技術(shù),因?yàn)镃SS Hack技術(shù)并不是W3C所推崇的,因此,不到萬(wàn)不得已,盡量不要用。
好了,說(shuō)了一大堆,下面我們進(jìn)入正題:
注釋不同的瀏覽器版本
(1)、支持所有的IE瀏覽器(不包括IE10標(biāo)準(zhǔn)模式)
<!--[if IE]>只有IE6,7,8,9瀏覽器顯示(IE10標(biāo)準(zhǔn)模式不支持)<![endif]-->
(2)、所有非IE瀏覽器(不包括IE10標(biāo)準(zhǔn)模式)
<!--[if !IE]><!-->只有非IE瀏覽器顯示(不包括IE10)<!--><![endif]-->
(3)、IE10瀏覽器
目前還沒(méi)有找到該版本瀏覽器的像<!--[if IE 9]>似的單獨(dú)注釋?zhuān)獻(xiàn)E10做得很不錯(cuò)了,就單單布局而言,頁(yè)面在IE10、FireFox、Chrome上的表現(xiàn)已經(jīng)沒(méi)有什么區(qū)別了。
(4)、IE9瀏覽器
<!--[if IE 9]>IE9瀏覽器顯示<hr/><![endif]-->
(5)、IE8瀏覽器
<!--[if IE 8]>IE8瀏覽器顯示<hr/><![endif]-->
(6)、IE7瀏覽器
<!--[if IE 7]>IE7瀏覽器顯示<hr/><![endif]-->
(7)、IE6瀏覽器
<!--[if IE 6]>IE6瀏覽器顯示<hr/><![endif]-->
(8)、IE10以下版本瀏覽器(不包括IE10)
<!--[if lt IE 10]>IE10以下版本瀏覽器顯示(不包括IE10)<hr/><![endif]-->
(9)、IE9及IE9以下版本瀏覽器(包括IE9)
<!--[if lte IE 9]>IE9及IE9以下版本瀏覽器顯示(包括IE9)<hr/><![endif]-->
(10)、IE6以上版本瀏覽器(不含IE6)
<!--[if gt IE 6]>IE6以上版本瀏覽器顯示(不含IE6)<hr/><![endif]-->
(11)、IE7及IE7以上版本瀏覽器
<!--[if gte IE 7]>IE7及IE7以上版本瀏覽器顯示(包含IE7)<hr/><![endif]-->
那么我們?cè)撛趺催\(yùn)用呢?我們不可能為了兼容像上面那么寫(xiě),把整頁(yè)的內(nèi)容分別寫(xiě)在不同的注釋塊內(nèi)。其實(shí)這里有兩種方法:
方法1、根據(jù)不同的瀏覽器版本,載入不同的css
如我們需要分別兼容IE6、7、8,我們可以這樣做
<!--[if IE 8]>
<link rel="stylesheet" type="text/css" href="ie8.cdd">
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="ie7.cdd">
<![endif]-->
<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="ie6.cdd">
<![endif]-->
方法2、根據(jù)不同的瀏覽器版本,給html或body掛載不同的類(lèi)如
<!--[if lt IE 7 ]><html class="ie6" lang="zh-cn"><![endif]-->
<!--[if IE 7 ]><html class="ie7" lang="zh-cn"><![endif]-->
<!--[if IE 8 ]><html class="ie8" lang="zh-cn"><![endif]-->
<!--[if IE 9 ]><html class="ie9" lang="zh-cn"><![endif]-->
最后我們看一下lt,lte,gt,gte分別表示什么
lt:小于當(dāng)前版本
lte:小于或等于當(dāng)前版本,包括本身
gt:大于當(dāng)前版本
gte:大于或等于當(dāng)前版本,包括本身
好了,我們今天就到這里,大家可能已經(jīng)知道怎么簡(jiǎn)單的處理瀏覽器兼容了,那么下次我們接著介紹一些CSS Hack技術(shù),更進(jìn)一步的處理瀏覽器兼容
測(cè)試代碼:
<!DOCTYPE html>
<html>
<head>
<title> 用條件注釋判斷瀏覽器版本,解決兼容問(wèn)題 </title>
<meta charset="utf-8"/>
</head>
<body>
<!--[if IE]>只有IE6,7,8,9瀏覽器顯示(IE10標(biāo)準(zhǔn)模式不支持)<hr/><![endif]-->
<!--[if !IE]><!-->只有非IE瀏覽器顯示(不包括IE10)<hr/><!--><![endif]-->
<!--[if IE 9]>IE9瀏覽器顯示<hr/><![endif]-->
<!--[if IE 8]>IE8瀏覽器顯示<hr/><![endif]-->
<!--[if IE 7]>IE7瀏覽器顯示<hr/><![endif]-->
<!--[if IE 6]>IE6瀏覽器顯示<hr/><![endif]-->
<!--[if lt IE 10]>IE10以下版本瀏覽器顯示(不包括IE10)<hr/><![endif]-->
<!--[if lte IE 9]>IE9及IE9以下版本瀏覽器顯示(包括IE9)<hr/><![endif]-->
<!--[if gt IE 6]>IE6以上版本瀏覽器顯示(不含IE6)<hr/><![endif]-->
<!--[if gte IE 7]>IE7及IE7以上版本瀏覽器顯示(包含IE7)<hr/><![endif]-->
</body>
</html>
首先,我們寫(xiě)的頁(yè)面在不同的瀏覽器上之所以會(huì)出現(xiàn)表現(xiàn)不同的問(wèn)題,是因?yàn)椴煌臑g覽器在解析頁(yè)面時(shí),他們所遵循的規(guī)則并不是完全相同的。比如IE,不同的版本解析都不同,何況是不同的瀏覽器廠商,不同的內(nèi)核呢。但是我們?cè)谟龅郊嫒菪詥?wèn)題時(shí),應(yīng)該首先檢查我們自己寫(xiě)的代碼,看看是不是自己的問(wèn)題,然后再去追究瀏覽器的問(wèn)題。還有,在遇到兼容性問(wèn)題時(shí),不要?jiǎng)硬粍?dòng)就用CSS Hack技術(shù),因?yàn)镃SS Hack技術(shù)并不是W3C所推崇的,因此,不到萬(wàn)不得已,盡量不要用。
好了,說(shuō)了一大堆,下面我們進(jìn)入正題:
注釋不同的瀏覽器版本
(1)、支持所有的IE瀏覽器(不包括IE10標(biāo)準(zhǔn)模式)
<!--[if IE]>只有IE6,7,8,9瀏覽器顯示(IE10標(biāo)準(zhǔn)模式不支持)<![endif]-->
(2)、所有非IE瀏覽器(不包括IE10標(biāo)準(zhǔn)模式)
<!--[if !IE]><!-->只有非IE瀏覽器顯示(不包括IE10)<!--><![endif]-->
(3)、IE10瀏覽器
目前還沒(méi)有找到該版本瀏覽器的像<!--[if IE 9]>似的單獨(dú)注釋?zhuān)獻(xiàn)E10做得很不錯(cuò)了,就單單布局而言,頁(yè)面在IE10、FireFox、Chrome上的表現(xiàn)已經(jīng)沒(méi)有什么區(qū)別了。
(4)、IE9瀏覽器
<!--[if IE 9]>IE9瀏覽器顯示<hr/><![endif]-->
(5)、IE8瀏覽器
<!--[if IE 8]>IE8瀏覽器顯示<hr/><![endif]-->
(6)、IE7瀏覽器
<!--[if IE 7]>IE7瀏覽器顯示<hr/><![endif]-->
(7)、IE6瀏覽器
<!--[if IE 6]>IE6瀏覽器顯示<hr/><![endif]-->
(8)、IE10以下版本瀏覽器(不包括IE10)
<!--[if lt IE 10]>IE10以下版本瀏覽器顯示(不包括IE10)<hr/><![endif]-->
(9)、IE9及IE9以下版本瀏覽器(包括IE9)
<!--[if lte IE 9]>IE9及IE9以下版本瀏覽器顯示(包括IE9)<hr/><![endif]-->
(10)、IE6以上版本瀏覽器(不含IE6)
<!--[if gt IE 6]>IE6以上版本瀏覽器顯示(不含IE6)<hr/><![endif]-->
(11)、IE7及IE7以上版本瀏覽器
<!--[if gte IE 7]>IE7及IE7以上版本瀏覽器顯示(包含IE7)<hr/><![endif]-->
那么我們?cè)撛趺催\(yùn)用呢?我們不可能為了兼容像上面那么寫(xiě),把整頁(yè)的內(nèi)容分別寫(xiě)在不同的注釋塊內(nèi)。其實(shí)這里有兩種方法:
方法1、根據(jù)不同的瀏覽器版本,載入不同的css
如我們需要分別兼容IE6、7、8,我們可以這樣做
復(fù)制代碼
代碼如下:<!--[if IE 8]>
<link rel="stylesheet" type="text/css" href="ie8.cdd">
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="ie7.cdd">
<![endif]-->
<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="ie6.cdd">
<![endif]-->
方法2、根據(jù)不同的瀏覽器版本,給html或body掛載不同的類(lèi)如
復(fù)制代碼
代碼如下:<!--[if lt IE 7 ]><html class="ie6" lang="zh-cn"><![endif]-->
<!--[if IE 7 ]><html class="ie7" lang="zh-cn"><![endif]-->
<!--[if IE 8 ]><html class="ie8" lang="zh-cn"><![endif]-->
<!--[if IE 9 ]><html class="ie9" lang="zh-cn"><![endif]-->
最后我們看一下lt,lte,gt,gte分別表示什么
lt:小于當(dāng)前版本
lte:小于或等于當(dāng)前版本,包括本身
gt:大于當(dāng)前版本
gte:大于或等于當(dāng)前版本,包括本身
好了,我們今天就到這里,大家可能已經(jīng)知道怎么簡(jiǎn)單的處理瀏覽器兼容了,那么下次我們接著介紹一些CSS Hack技術(shù),更進(jìn)一步的處理瀏覽器兼容
測(cè)試代碼:
復(fù)制代碼
代碼如下:<!DOCTYPE html>
<html>
<head>
<title> 用條件注釋判斷瀏覽器版本,解決兼容問(wèn)題 </title>
<meta charset="utf-8"/>
</head>
<body>
<!--[if IE]>只有IE6,7,8,9瀏覽器顯示(IE10標(biāo)準(zhǔn)模式不支持)<hr/><![endif]-->
<!--[if !IE]><!-->只有非IE瀏覽器顯示(不包括IE10)<hr/><!--><![endif]-->
<!--[if IE 9]>IE9瀏覽器顯示<hr/><![endif]-->
<!--[if IE 8]>IE8瀏覽器顯示<hr/><![endif]-->
<!--[if IE 7]>IE7瀏覽器顯示<hr/><![endif]-->
<!--[if IE 6]>IE6瀏覽器顯示<hr/><![endif]-->
<!--[if lt IE 10]>IE10以下版本瀏覽器顯示(不包括IE10)<hr/><![endif]-->
<!--[if lte IE 9]>IE9及IE9以下版本瀏覽器顯示(包括IE9)<hr/><![endif]-->
<!--[if gt IE 6]>IE6以上版本瀏覽器顯示(不含IE6)<hr/><![endif]-->
<!--[if gte IE 7]>IE7及IE7以上版本瀏覽器顯示(包含IE7)<hr/><![endif]-->
</body>
</html>
相關(guān)文章
- 這篇文章主要介紹了淺談原生頁(yè)面兼容IE9問(wèn)題的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起2020-12-16
新版chrome瀏覽器設(shè)置允許跨域的實(shí)現(xiàn)
這篇文章主要介紹了新版chrome瀏覽器設(shè)置允許跨域的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起2020-11-30css hack之\9和\0就可能對(duì)hack IE11\IE9\IE8無(wú)效
每次設(shè)計(jì)一張網(wǎng)頁(yè)或一個(gè)表單,都被各種瀏覽器的兼容問(wèn)題傷透腦筋,尤其是IE家族。在做兼容性設(shè)計(jì)時(shí),我們往往會(huì)使用各種瀏覽器能識(shí)別的獨(dú)特語(yǔ)法進(jìn)行hack,從而達(dá)到各種瀏覽2020-03-20css區(qū)分ie8/ie9/ie10/ie11 chrome firefox的代碼
這篇文章主要介紹了css區(qū)分ie8/ie9/ie10/ie11 chrome firefox的代碼,需要的朋友可以參考下2020-03-20- 這篇文章主要介紹了解決CSS瀏覽器兼容性問(wèn)題的4種方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)2020-02-28
常見(jiàn)的瀏覽器兼容性問(wèn)題(小結(jié))
這篇文章主要介紹了常見(jiàn)的瀏覽器兼容性問(wèn)題(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)2020-02-20- 這篇文章主要介紹了border-radius IE8兼容處理的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)2020-02-12
淺談?dòng)龅降膸讉€(gè)瀏覽器兼容性問(wèn)題
這篇文章主要介紹了淺談?dòng)龅降膸讉€(gè)瀏覽器兼容性問(wèn)題,詳細(xì)的介紹了幾種我遇到的問(wèn)題和解決方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-26- 這篇文章主要介紹了base64圖片在各種瀏覽器的兼容性處理的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-14
對(duì)常見(jiàn)的css屬性進(jìn)行瀏覽器兼容性總結(jié)(推薦)
這篇文章主要介紹了對(duì)常見(jiàn)的css屬性進(jìn)行瀏覽器兼容性總結(jié)(推薦)的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-20