IE10 CSS Hack介紹及IE11的CSS Hack提前了解
發(fā)布時(shí)間:2013-09-16 15:23:23 作者:佚名
我要評(píng)論

一個(gè)頁(yè)面IE10下有問(wèn)題,IE9下測(cè)試了一下,也有同樣的問(wèn)題。悲劇了趕緊找IE10的hack,下面的方法還是比較實(shí)用的,感興趣的朋友可以參考下
有IE就有hack,看看IE9的css hack,IE8的css hack;上次同事說(shuō)一個(gè)頁(yè)面IE10下有問(wèn)題,IE9下測(cè)試了一下,也有同樣的問(wèn)題。悲劇了趕緊找IE10的hack。
google上翻到的IE10 CSS Hacks 還算比較實(shí)用的。記錄一下以備后用。
一、特性檢測(cè):@cc_on
我們可以用IE私有的條件編譯(conditional compilation)結(jié)合條件注釋來(lái)提供針對(duì)ie10的Hack:該腳本里面的IE排除條件注釋?zhuān)源_保IE6-9不承認(rèn)它,然后它功能檢測(cè)到了名為@ cc_on。
<!--[if !IE]><!--><script>
if (/*@cc_on!@*/false) {
document.documentElement.className+=' ie10';
}
</script><!--<![endif]-->
請(qǐng)注意/*@cc_on ! @*/中間的這個(gè)感嘆號(hào)。
這樣就可以在ie10中給html元素添加一個(gè)class=”ie10″,然后針對(duì)ie10的樣式可以卸載這個(gè)這個(gè)選擇器下:
.ie10 .example {
/* IE10-only styles go here */
}
這是ie10標(biāo)準(zhǔn)模式下的截圖:
這是ie10,IE8模式下的截圖:
考錄到兼容以后的IE版本,比如IE11,js代碼可以改一下:
if (/*@cc_on!@*/false) {
document.documentElement.className+=' ie' + document.documentMode;
}
關(guān)于document.documentMode可以查看IE的documentMode屬性(IE8+新增)。
可能是想多了,實(shí)事上經(jīng)測(cè)試預(yù)覽版的IE11已經(jīng)不支持@ cc_on語(yǔ)句,不知道正式版會(huì)不會(huì)支持。不過(guò)這樣區(qū)分IE11倒是一件好事。這樣修改代碼:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>無(wú)標(biāo)題文檔</title>
<!--[if !IE]><!-->
<script>
// 針對(duì)IE10
if (/*@cc_on!@*/false) {
document.documentElement.className += ' ie' + document.documentMode;
}
// 針對(duì)IE11及非IE瀏覽器,
// 因?yàn)镮E11下document.documentMode為11,所以html標(biāo)簽上會(huì)加ie11樣式類(lèi);
// 而非IE瀏覽器的document.documentMode為undefined,所以html標(biāo)簽上會(huì)加ieundefined樣式類(lèi)。
if (/*@cc_on!@*/true) {
document.documentElement.className += ' ie' + document.documentMode;
}
</script>
<!--<![endif]-->
<style type="text/css">
.ie10 .testclass {
color: red
}
.ie11 .testclass {
color: blue
}
.ieundefined .testclass {
color: green
}
</style>
</head>
<body>
<div class="testclass">
test text!
</div>
</body>
</html>
其中:
if (/*@cc_on!@*/true) {
document.documentElement.className += ' ie' + document.documentMode;
}
以上代碼是針對(duì)IE11及非IE瀏覽器,因?yàn)?
IE11下document.documentMode為11,所以html標(biāo)簽上會(huì)加ie11樣式類(lèi);
而非IE瀏覽器的document.documentMode為undefined,所以html標(biāo)簽上會(huì)加ieundefined樣式類(lèi)。
這樣把IE11也區(qū)分出來(lái)了,IE11預(yù)覽版下的截圖:
呵呵,純屬YY,IE11正式版還不知道什么樣子,而且在實(shí)際的項(xiàng)目中隨著IE的逐漸標(biāo)準(zhǔn)化,IE11和IE10可能很少用不到css hack。
二、@media -ms-high-contrast 方法
IE10支持媒體查詢,然后也支持-ms-high-contrast這個(gè)屬性,所以,我們可以用它來(lái)Hack IE10:
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
/* IE10-specific styles go here */
}
這種寫(xiě)法可以適配到高對(duì)比度和默認(rèn)模式。所以可以覆蓋到所有ie10的模式了。這種方式在預(yù)覽版的IE11中也生效。
當(dāng)然,方法二也可以和方法一一起用:
if (window.matchMedia("screen and (-ms-high-contrast: active), (-ms-high-contrast: none)").matches) {
document.documentElement.className += "ie10";
}
三、@media 0 方法
這個(gè)方法不是太完美,因?yàn)镮E9和預(yù)覽版的IE11也支持media和\0的hack。
@media screen and (min-width:0\0) {
/* IE9 , IE10 ,IE11 rule sets go here */
}
總之,隨著IE的逐漸標(biāo)準(zhǔn)化,IE11和IE10可能很少用不到css hack,不看也罷,呵呵。
google上翻到的IE10 CSS Hacks 還算比較實(shí)用的。記錄一下以備后用。
一、特性檢測(cè):@cc_on
我們可以用IE私有的條件編譯(conditional compilation)結(jié)合條件注釋來(lái)提供針對(duì)ie10的Hack:該腳本里面的IE排除條件注釋?zhuān)源_保IE6-9不承認(rèn)它,然后它功能檢測(cè)到了名為@ cc_on。
復(fù)制代碼
代碼如下:<!--[if !IE]><!--><script>
if (/*@cc_on!@*/false) {
document.documentElement.className+=' ie10';
}
</script><!--<![endif]-->
請(qǐng)注意/*@cc_on ! @*/中間的這個(gè)感嘆號(hào)。
這樣就可以在ie10中給html元素添加一個(gè)class=”ie10″,然后針對(duì)ie10的樣式可以卸載這個(gè)這個(gè)選擇器下:
復(fù)制代碼
代碼如下:.ie10 .example {
/* IE10-only styles go here */
}
這是ie10標(biāo)準(zhǔn)模式下的截圖:

這是ie10,IE8模式下的截圖:

考錄到兼容以后的IE版本,比如IE11,js代碼可以改一下:
復(fù)制代碼
代碼如下:if (/*@cc_on!@*/false) {
document.documentElement.className+=' ie' + document.documentMode;
}
關(guān)于document.documentMode可以查看IE的documentMode屬性(IE8+新增)。
可能是想多了,實(shí)事上經(jīng)測(cè)試預(yù)覽版的IE11已經(jīng)不支持@ cc_on語(yǔ)句,不知道正式版會(huì)不會(huì)支持。不過(guò)這樣區(qū)分IE11倒是一件好事。這樣修改代碼:
復(fù)制代碼
代碼如下:<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>無(wú)標(biāo)題文檔</title>
<!--[if !IE]><!-->
<script>
// 針對(duì)IE10
if (/*@cc_on!@*/false) {
document.documentElement.className += ' ie' + document.documentMode;
}
// 針對(duì)IE11及非IE瀏覽器,
// 因?yàn)镮E11下document.documentMode為11,所以html標(biāo)簽上會(huì)加ie11樣式類(lèi);
// 而非IE瀏覽器的document.documentMode為undefined,所以html標(biāo)簽上會(huì)加ieundefined樣式類(lèi)。
if (/*@cc_on!@*/true) {
document.documentElement.className += ' ie' + document.documentMode;
}
</script>
<!--<![endif]-->
<style type="text/css">
.ie10 .testclass {
color: red
}
.ie11 .testclass {
color: blue
}
.ieundefined .testclass {
color: green
}
</style>
</head>
<body>
<div class="testclass">
test text!
</div>
</body>
</html>
其中:
復(fù)制代碼
代碼如下:if (/*@cc_on!@*/true) {
document.documentElement.className += ' ie' + document.documentMode;
}
以上代碼是針對(duì)IE11及非IE瀏覽器,因?yàn)?
IE11下document.documentMode為11,所以html標(biāo)簽上會(huì)加ie11樣式類(lèi);
而非IE瀏覽器的document.documentMode為undefined,所以html標(biāo)簽上會(huì)加ieundefined樣式類(lèi)。
這樣把IE11也區(qū)分出來(lái)了,IE11預(yù)覽版下的截圖:

呵呵,純屬YY,IE11正式版還不知道什么樣子,而且在實(shí)際的項(xiàng)目中隨著IE的逐漸標(biāo)準(zhǔn)化,IE11和IE10可能很少用不到css hack。
二、@media -ms-high-contrast 方法
IE10支持媒體查詢,然后也支持-ms-high-contrast這個(gè)屬性,所以,我們可以用它來(lái)Hack IE10:
復(fù)制代碼
代碼如下:@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
/* IE10-specific styles go here */
}
這種寫(xiě)法可以適配到高對(duì)比度和默認(rèn)模式。所以可以覆蓋到所有ie10的模式了。這種方式在預(yù)覽版的IE11中也生效。
當(dāng)然,方法二也可以和方法一一起用:
復(fù)制代碼
代碼如下:if (window.matchMedia("screen and (-ms-high-contrast: active), (-ms-high-contrast: none)").matches) {
document.documentElement.className += "ie10";
}
三、@media 0 方法
這個(gè)方法不是太完美,因?yàn)镮E9和預(yù)覽版的IE11也支持media和\0的hack。
復(fù)制代碼
代碼如下:@media screen and (min-width:0\0) {
/* IE9 , IE10 ,IE11 rule sets go here */
}
總之,隨著IE的逐漸標(biāo)準(zhǔn)化,IE11和IE10可能很少用不到css hack,不看也罷,呵呵。
相關(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