HTML下在IE瀏覽器中的專有條件注釋講解
更新時(shí)間:2007年04月20日 00:00:00 作者:
在進(jìn)行WEB標(biāo)準(zhǔn)網(wǎng)頁的學(xué)習(xí)和應(yīng)用過程中,網(wǎng)頁對(duì)瀏覽器的兼容性是經(jīng)常接觸到的一個(gè)問題。其中因微軟公司的Internet Explorer(簡(jiǎn)稱IE)占據(jù)瀏覽器市場(chǎng)的大半江山,此外還有Firefox、Opera等。需要對(duì)這些瀏覽器進(jìn)行兼容。
同時(shí),單就IE而言,因IE版本的升級(jí)更替,目前瀏覽者使用的主要停留在 IE5(IE5.5)、IE6和IE7這三個(gè)版本中。而這3個(gè)版本對(duì)于我們制作的WEB標(biāo)準(zhǔn)網(wǎng)頁(XHTML+CSS)解釋執(zhí)行的顯示狀況不盡相同。并且,其他非IE瀏覽器與IE對(duì)某些CSS解釋也不一樣。所以,通過IE瀏覽器中的專有條件注釋可有針對(duì)性的進(jìn)行相關(guān)屬性的定義。
原文地址:http://www.quirksmode.org/css/condcom.html
條件注釋只能用于Explorer 5+ Windows(以下簡(jiǎn)稱IE)(條件注釋從IE5開始被支持)。如果你安裝了多個(gè)IE,條件注釋(Conditional comments)將會(huì)以最高版本的IE為標(biāo)準(zhǔn)(目前為IE 7)。
條件注釋只能在windows Internet Explorer(以下簡(jiǎn)稱IE)下使用,因此我們可以通過條件注釋來為IE添加特別的指令。
通俗點(diǎn),條件注釋就是一些if判斷,但這些判斷不是在腳本里執(zhí)行的,而是直接在html代碼里執(zhí)行的,比如:
<!--[if IE]>
這里是正常的html代碼
<![endif]-->
1,條件注釋的基本結(jié)構(gòu)和HTML的注釋(<!-- -->)是一樣的。因此IE以外的瀏覽器將會(huì)把它們看作是普通的注釋而完全忽略它們。
2,IE將會(huì)根據(jù)if條件來判斷是否如解析普通的頁面內(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)格地說是屬于CSS hack。因?yàn)榫秃孟笃渌嬲腸ss hack一樣,它使得我們可以給一些瀏覽器賦予特殊的樣式,再則它不依賴于某個(gè)瀏覽器的BUG來控制另外一個(gè)瀏覽器(的樣式)。除此之外,條件判斷還能用來做一些超出CSS HACK范圍的事情(雖然這種情況很少發(fā)生)。
因?yàn)闂l件判斷不依賴于某個(gè)瀏覽器的hack,而是一個(gè)經(jīng)過深思熟慮的特色功能,所以我相信它是可以被放心地使用的。當(dāng)然,其他瀏覽器也有可能支持條件判斷(到目前為止還沒有),但是看起來,他們應(yīng)該不會(huì)使用如<!--[if IE]>這樣的語法。
應(yīng)該如何應(yīng)用條件注釋
本文一開始就說明了,因?yàn)镮E各版本的瀏覽器對(duì)我們制作的WEB標(biāo)準(zhǔn)的頁面解釋不一樣,具體就是對(duì)CSS的解釋不同,我們?yōu)榱思嫒葸@些,可運(yùn)用條件注釋來各自定義,最終達(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)。該例題很能說明網(wǎng)頁對(duì)IE瀏覽器和非IE瀏覽器間的兼容性問題解決。
<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]>來定義非IE瀏覽器下的狀況,但注意:條件注釋只有在IE瀏覽器下才能執(zhí)行,這個(gè)代碼在非IE瀏覽下非單不是執(zhí)行該條件下的定義,而是當(dāng)做注釋視而不見。
正常就是默認(rèn)的樣式,對(duì)IE瀏覽器需要特殊處理的,才進(jìn)行條件注釋
同時(shí),單就IE而言,因IE版本的升級(jí)更替,目前瀏覽者使用的主要停留在 IE5(IE5.5)、IE6和IE7這三個(gè)版本中。而這3個(gè)版本對(duì)于我們制作的WEB標(biāo)準(zhǔn)網(wǎng)頁(XHTML+CSS)解釋執(zhí)行的顯示狀況不盡相同。并且,其他非IE瀏覽器與IE對(duì)某些CSS解釋也不一樣。所以,通過IE瀏覽器中的專有條件注釋可有針對(duì)性的進(jìn)行相關(guān)屬性的定義。
原文地址:http://www.quirksmode.org/css/condcom.html
條件注釋只能用于Explorer 5+ Windows(以下簡(jiǎn)稱IE)(條件注釋從IE5開始被支持)。如果你安裝了多個(gè)IE,條件注釋(Conditional comments)將會(huì)以最高版本的IE為標(biāo)準(zhǔn)(目前為IE 7)。
條件注釋只能在windows Internet Explorer(以下簡(jiǎn)稱IE)下使用,因此我們可以通過條件注釋來為IE添加特別的指令。
通俗點(diǎn),條件注釋就是一些if判斷,但這些判斷不是在腳本里執(zhí)行的,而是直接在html代碼里執(zhí)行的,比如:
<!--[if IE]>
這里是正常的html代碼
<![endif]-->
1,條件注釋的基本結(jié)構(gòu)和HTML的注釋(<!-- -->)是一樣的。因此IE以外的瀏覽器將會(huì)把它們看作是普通的注釋而完全忽略它們。
2,IE將會(huì)根據(jù)if條件來判斷是否如解析普通的頁面內(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)格地說是屬于CSS hack。因?yàn)榫秃孟笃渌嬲腸ss hack一樣,它使得我們可以給一些瀏覽器賦予特殊的樣式,再則它不依賴于某個(gè)瀏覽器的BUG來控制另外一個(gè)瀏覽器(的樣式)。除此之外,條件判斷還能用來做一些超出CSS HACK范圍的事情(雖然這種情況很少發(fā)生)。
因?yàn)闂l件判斷不依賴于某個(gè)瀏覽器的hack,而是一個(gè)經(jīng)過深思熟慮的特色功能,所以我相信它是可以被放心地使用的。當(dāng)然,其他瀏覽器也有可能支持條件判斷(到目前為止還沒有),但是看起來,他們應(yīng)該不會(huì)使用如<!--[if IE]>這樣的語法。
應(yīng)該如何應(yīng)用條件注釋
本文一開始就說明了,因?yàn)镮E各版本的瀏覽器對(duì)我們制作的WEB標(biāo)準(zhǔn)的頁面解釋不一樣,具體就是對(duì)CSS的解釋不同,我們?yōu)榱思嫒葸@些,可運(yùn)用條件注釋來各自定義,最終達(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)。該例題很能說明網(wǎng)頁對(duì)IE瀏覽器和非IE瀏覽器間的兼容性問題解決。
<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]>來定義非IE瀏覽器下的狀況,但注意:條件注釋只有在IE瀏覽器下才能執(zhí)行,這個(gè)代碼在非IE瀏覽下非單不是執(zhí)行該條件下的定義,而是當(dāng)做注釋視而不見。
正常就是默認(rèn)的樣式,對(duì)IE瀏覽器需要特殊處理的,才進(jìn)行條件注釋
相關(guān)文章
標(biāo)準(zhǔn)布局應(yīng)用:顯示/隱藏側(cè)邊欄 [附詳細(xì)注解]
標(biāo)準(zhǔn)布局應(yīng)用:顯示/隱藏側(cè)邊欄 [附詳細(xì)注解]...2006-12-12
三個(gè)不常見的 HTML5 實(shí)用新特性簡(jiǎn)介
都已經(jīng)到了 2014 年了,再來說 HTML5 的新特性,實(shí)在是夠晚了,不過這幾個(gè)在介紹 HTML5 的書上很少見到,但又可以方便的應(yīng)用在自己的網(wǎng)站上,所以特地來介紹一下2014-03-03
不用javascript實(shí)現(xiàn)帶序號(hào)的表格隔行換色的效果
這篇文章使用css實(shí)現(xiàn)隔行換色的方法,需要的朋友可以參考一下2007-11-11
css創(chuàng)意ul+li實(shí)現(xiàn)的細(xì)線表格實(shí)現(xiàn)代碼
非常用創(chuàng)意的用ul+li實(shí)現(xiàn)的細(xì)線表格效果,不用table2008-08-08
前端面試學(xué)習(xí)中幾個(gè)常見有用的知識(shí)點(diǎn)
一場(chǎng)疫情過后,又要經(jīng)歷一次次面試,今天小編給大家分享前端面試學(xué)習(xí)中幾個(gè)常見有用的知識(shí)點(diǎn),非常不錯(cuò),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下2022-12-12
DIV CSS網(wǎng)頁布局 最小高度(min-height)的妙用
最小高度可以設(shè)定一個(gè)BOX的最小高度,當(dāng)其內(nèi)容較少時(shí)時(shí),也能保持BOX的高度為一定,超出就自動(dòng)向下延伸,但到目前為止,只有Opera 和 Mozilla 支持,IE7開始也支持了,但I(xiàn)E7處于測(cè)試階段,等正式版發(fā)布到普及需一段也許比較長(zhǎng)的時(shí)間,除非MS把它捆綁在某個(gè)操作系統(tǒng)上,如何在現(xiàn)有基礎(chǔ)上(IE6 80-90%),合理、妙用最小高度了?2008-11-11
用div實(shí)現(xiàn)像table一樣的布局方法
下面是我翻譯的內(nèi)容,是根據(jù)我對(duì)文章的理解意譯的,你就別挑哪里翻譯的不對(duì)了,我的目的只是傳達(dá)這個(gè)CSS技巧。2008-04-04

