IE瀏覽器相容☞css hack
ie瀏覽器的相容問題,各位前端的小夥伴肯定有不少,頭疼的記憶;目前w3c標準,對html5,css3都已經標準化,各大瀏覽器廠商也都對瀏覽器進行了升級改造;但是在某些行業,如國企,銀行,等一些傳統企業,依然再用IE8甚至更老的版本瀏覽器,而且還要必須支援IE8,這裡css3什麼的就別想了,就連一些常用的css都區別於其他瀏覽器。這裡就需要對IE進行相容,這裡就需要提到css hack 了。
1.條件hack
語法:
<!--[if <keywords>? IE <version>?]>
HTML程式碼塊
<![endif]-->
屬性值:
<keywords>
if條件共包含6種選擇方式:是否、大於、大於或等於、小於、小於或等於、非指定版本
是否:
指定是否IE或IE某個版本。關鍵字:空
大於:
選擇大於指定版本的IE版本。關鍵字:gt(greater than)
大於或等於:
選擇大於或等於指定版本的IE版本。關鍵字:gte(greater than or equal)
小於:
選擇小於指定版本的IE版本。關鍵字:lt(less than)
小於或等於:
選擇小於或等於指定版本的IE版本。關鍵字:lte(less than or equal)
非指定版本:
選擇除指定版本外的所有IE版本。關鍵字:!
<version>
目前的常用IE版本為6.0及以上,推薦酌情忽略低版本,把精力花在為使用高階瀏覽器的使用者提供更好的體驗上
IE10及以上版本已將條件註釋特性移除,使用時需注意。
舉個例子:
<!--[if lt IE 8]>
<style>
.test{color:red;}
</style>
<![endif]-->
**小於IE8的瀏覽器顯示這個樣式
- if條件Hack是HTML級別的(包含但不僅是CSS的Hack,可以選擇任何HTML程式碼塊)
- 如不想在非IE中看到某區域,可這樣寫:
-
<!--[if IE]> <p>你在非IE中將看不到我的身影</p> <![endif]-->
上述p程式碼塊,將只在IE中可見。
2.屬性級hack
_:選擇IE6及以下。連線線(中劃線)(-)亦可使用,為了避免與某些帶中劃線的屬性混淆,所以使用下劃線(_)更為合適。
*:選擇IE7及以下。諸如:(+)與(#)之類的均可使用,不過業界對(*)的認知度更高
\9:選擇IE6+
\0:選擇IE8+和Opera15以下的瀏覽器
舉個例子:如想同一段文字在IE6,7,8顯示為不同顏色,可這樣寫:
<style>
h1 {
margin: 10px 0;
font-size: 16px;
}
.test {
color: #c30; /* For latest Firefox, chrome, Safari */
color: #090\0; /* For Opera15- */
color: #00f\9; /* For IE8+ */
*color: #f00; /* For IE7 */
_color: #ff0; /* For IE6 */
}
</style>
3.選擇符級hack
舉例如下:
* html .test { color: #090; } /* For IE6 and earlier */
* + html .test { color: #ff0; } /* For IE7 */
.test:lang(zh-cmn-Hans) { color: #f00; } /* For IE8+ and not IE */
.test:nth-child(1) { color: #0ff; } /* For IE9+ and not IE */
/* 上述程式碼中的3,4兩行就是典型的利用能力來進行選擇的CSS Hack。*/
注意事項:
選擇不同的瀏覽器及版本
- 儘可能減少對CSS Hack的使用。Hack有風險,使用需謹慎
- 通常如未作特別說明,本文件所有的程式碼和示例的預設執行環境都為標準模式。
- 一些CSS Hack由於瀏覽器存在交叉認識,所以需要通過層層覆蓋的方式來實現對不同瀏覽器進行Hack的。