摘要我做html頁(yè)面,,老是遇到各瀏覽器不兼容的問(wèn)題,煩死了,。 我想,,可不可以用JS判斷用戶使用什么內(nèi)核的瀏覽器然后自動(dòng)調(diào)用自己的CSS文件,? 例如: 如果用IE瀏覽器的,,就用JS判斷給它使用 <link href="css/ie.css" type="text/css" rel="stylesheet"> 如果用火狐FF的,JS又自動(dòng)給使用 <link href="css/ff.css" type="text/css" rel="stylesheet"> 我做html頁(yè)面,,老是遇到各瀏覽器不兼容的問(wèn)題,,煩死了,。 我想,可不可以用JS判斷用戶使用什么內(nèi)核的瀏覽器然后自動(dòng)調(diào)用自己的CSS文件,? 例如: 如果用IE瀏覽器的,,就用JS判斷給它使用 <link href="css/ie.css" type="text/css" rel="stylesheet"> 如果用火狐FF的,JS又自動(dòng)給使用 <link href="css/ff.css" type="text/css" rel="stylesheet"> 當(dāng)然可以了,,在頁(yè)面里直接這樣寫就行 <!--[if IE]><link type="text/css" rel="stylesheet" href="style_ie.css" /><![endif]--> 具體的文章如下: 條件注釋只能在windows Internet Explorer(以下簡(jiǎn)稱IE)下使用,,因此我們可以通過(guò)條件注釋來(lái)為IE添加特別的指令。 通俗點(diǎn),,條件注釋就是一些if判斷,,但這些判斷不是在腳本里執(zhí)行的,而是直接在html代碼里執(zhí)行的,,比如: <!--[if IE]> 這里是正常的html代碼 <![endif]--> 1,,條件注釋的基本結(jié)構(gòu)和HTML的注釋(<!-- -->)是一樣的。因此IE以外的瀏覽器將會(huì)把它們看作是普通的注釋而完全忽略它們,。 2,,IE將會(huì)根據(jù)if條件來(lái)判斷是否如解析普通的頁(yè)面內(nèi)容一樣解析條件注釋里的內(nèi)容。 3,,條件注釋使用的是HTML的注釋結(jié)構(gòu),,因此他們只能使用在HTML文件里,而不能在CSS文件中使用,。 可使用如下代碼檢測(cè)當(dāng)前IE瀏覽器的版本(注意:在非IE瀏覽器中是看不到效果的) <!--[if IE]> <h1>您正在使用IE瀏覽器</h1> <!--[if IE 5]> <h2>版本 5</h2> <![endif]--> <!--[if IE 5.0]> <h2>版本 5.0</h2> <![endif]--> <!--[if IE 5.5]> <h2>版本 5.5</h2> <![endif]--> <!--[if IE 6]> <h2>版本 6</h2> <![endif]--> <!--[if IE 7]> <h2>版本 7</h2> <![endif]--> <![endif]--> 那如果當(dāng)前的瀏覽器是IE,,但版本比IE5還低,,該怎么辦呢,,可以使用<!--[if ls IE 5]>,當(dāng)然,,根據(jù)條件注釋只能在IE5+的環(huán)境之下,,所以<!--[if ls IE 5]>根本不會(huì)被執(zhí)行。 lte:就是Less than or equal to的簡(jiǎn)寫,,也就是小于或等于的意思,。 lt :就是Less than的簡(jiǎn)寫,,也就是小于的意思。 gte:就是Greater than or equal to的簡(jiǎn)寫,,也就是大于或等于的意思,。 gt :就是Greater than的簡(jiǎn)寫,也就是大于的意思,。 ! :就是不等于的意思,,跟javascript里的不等于判斷符相同 Conditional comments屬于CSS hack? 條件判斷屬于CSS hack嗎? 嚴(yán)格地說(shuō)是屬于CSS hack,。因?yàn)榫秃孟笃渌嬲腸ss hack一樣,,它使得我們可以給一些瀏覽器賦予特殊的樣式,再則它不依賴于某個(gè)瀏覽器的BUG來(lái)控制另外一個(gè)瀏覽器(的樣式),。除此之外,,條件判斷還能用來(lái)做一些超出CSS HACK范圍的事情(雖然這種情況很少發(fā)生)。 因?yàn)闂l件判斷不依賴于某個(gè)瀏覽器的hack,而是一個(gè)經(jīng)過(guò)深思熟慮的特色功能,,所以我相信它是可以被放心地使用的,。當(dāng)然,其他瀏覽器也有可能支持條件判斷(到目前為止還沒(méi)有),,但是看起來(lái),,他們應(yīng)該不會(huì)使用如<!--[if IE]>這樣的語(yǔ)法。 應(yīng)該如何應(yīng)用條件注釋 本文一開(kāi)始就說(shuō)明了,,因?yàn)镮E各版本的瀏覽器對(duì)我們制作的WEB標(biāo)準(zhǔn)的頁(yè)面解釋不一樣,,具體就是對(duì)CSS的解釋不同,我們?yōu)榱思嫒葸@些,,可運(yùn)用條件注釋來(lái)各自定義,,最終達(dá)到兼容的目的。比如: <!-- 默認(rèn)先調(diào)用css.css樣式表 --> <link rel="stylesheet" type="text/css" href="css.css" /> <!--[if IE 7]> <!-- 如果IE瀏覽器版是7,調(diào)用ie7.css樣式表 --> <link rel="stylesheet" type="text/css" href="ie7.css" /> <![endif]--> <!--[if lte IE 6]> <!-- 如果IE瀏覽器版本小于等于6,調(diào)用ie.css樣式表 --> <link rel="stylesheet" type="text/css" href="ie.css" /> <![endif]--> 這其中就區(qū)分了IE7和IE6向下的瀏覽器對(duì)CSS的執(zhí)行,,達(dá)到兼容的目的,。同時(shí),首行默認(rèn)的css.css還能與其他非IE瀏覽器實(shí)現(xiàn)兼容,。 注意:默認(rèn)的CSS樣式應(yīng)該位于HTML文檔的首行,,進(jìn)行條件注釋判斷的所有內(nèi)容必須位于該默認(rèn)樣式之后。 比如如下代碼,,在IE瀏覽器下執(zhí)行顯示為紅色,,而在非IE瀏覽器下顯示為黑色。如果把條件注釋判斷放在首行,,則不能實(shí)現(xiàn),。該例題很能說(shuō)明網(wǎng)頁(yè)對(duì)IE瀏覽器和非IE瀏覽器間的兼容性問(wèn)題解決。 <style type="text/css"> body{ background-color: #000; } </style> <!--[if IE]> <style type="text/css"> body{ background-color: #F00; } </style> <![endif]--> 同時(shí),,有人會(huì)試圖使用<!--[if !IE]>來(lái)定義非IE瀏覽器下的狀況,,但注意:條件注釋只有在IE瀏覽器下才能執(zhí)行,,這個(gè)代碼在非IE瀏覽下非單不是執(zhí)行該條件下的定義,而是當(dāng)做注釋視而不見(jiàn),。 正常就是默認(rèn)的樣式,,對(duì)IE瀏覽器需要特殊處理的,才進(jìn)行條件注釋,。 |
|
來(lái)自: 風(fēng)聲之家 > 《JS》