IE10 CSS hack,IE兼容問題

IE10 CSS hack,IE兼容問題

首先,ie10不支持條件註釋了。css

方法一:特性檢測:@cc_on

咱們能夠用IE私有的條件編譯(conditional compilation)結合條件註釋來提供針對ie10的Hack:html

<!--[if !IE]><!--<script> 
if (/*@cc_on!@*/false) { 
     document.documentElement.className+=' ie10'; 
</script><!--<![endif]-->

請注意/*@cc_on ! @*/中間的這個感嘆號。web

這樣就能夠在ie10中給html元素添加一個class=」ie10″,而後針對ie10的樣式能夠卸載這個這個選擇器下:瀏覽器

@media  screen   and (-ms-high-contrast: active), (-ms-high-contrast:  none ) { 
    /* IE10-specific styles go here */
}

條件編譯支持全部版本的ie瀏覽器,而其它瀏覽器不支持。可是頗有可能之後IE11出來後,這種方法就失效了。。。app

須要注意的是,條件編譯不支持Windows store中的app中使用,只支持在IE瀏覽器中使用。spa

固然,咱們也能夠用傳統的用ua給ie10中html元素添加class的方法來實現。code

方法二:@media -ms-high-contrast

IE10支持媒體查詢,而後也支持-ms-high-contrast這個屬性,因此,咱們能夠用它來hack ie10:orm

if (window.matchMedia( "screen and (-ms-high-contrast: active), (-ms-high-contrast: none)" ).matches) {
     document.documentElement.className +=  "ie10" ;
}

這種寫法能夠適配到高對比度和默認模式。因此能夠覆蓋到全部ie10的模式了。htm

而後這種方式可能也會在後面的IE11中生效。ip

固然,方法二也能夠和方法一一塊兒用:

@media  screen   and ( min-width : 0 \ 0 ) { 
     /* IE9 and IE10 rule sets go here */
}

不過,估計後面ie10也會普及到Windows 7平臺,因此ie9會消失,只是看看ie8和ie7的份額,這種狀況可能不會發生吧。。。

1, 選擇符前綴法,即在CSS選擇符前加一些只有特定瀏覽器才能識別的前綴。

*html 前綴只對IE6生效 *+html 前綴只對IE7生效

例如:

.test{  color : #FFF ;}
*html .test{  color : #000 ;}   /* only for ie6 */
*+html .test{  color : #CCC ;}  /* only for ie7 */

2, 屬性前綴法,即在樣式屬性名前加一些只有特定瀏覽器才能識別的前綴。

「-」 只對IE6生效

「*」 只對IE6和IE7生效

例如:

.test{  color : #FFF ; * color : #CCC ; - color : #000 ;}

3, 還有一種hack方法是在屬性值後加上一些只有特定瀏覽器才能識別的前綴。

「\9″  IE6/IE7/IE8/IE9/IE10都生效

「″ IE8/IE9/IE10都生效

「\9″ 只對IE9/IE10生效

例如:

.test{  color : #FFF ;  color : #CCC \ 9 ;  color : #3FC \ 0 ;}

 

文章內容整理自:http://www.impressivewebs.com/ie10-css-hacks/      http://www.ifrans.cn/css-hack/

相關文章
相關標籤/搜索