IE 兼容性写法

1. 条件注释语句

<!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->
<!--[if IE]> 所有的IE可识别 <![endif]-->
<!--[if IE 6]> 仅IE6可识别 <![endif]-->
<!--[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]-->
<!--[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]-->
<!--[if IE 7]> 仅IE7可识别 <![endif]-->
<!--[if lt IE 7]> IE7以及IE7以下版本可识别 <![endif]-->
<!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]-->
<!--[if IE 8]> 仅IE8可识别 <![endif]-->
<!--[if IE 9]> 仅IE9可识别 <![endif]-->

 

2. CSS hack 写法

/* 所有浏览器 通用*/
height: 100px;  

/* IE6 专用 */
_height: 100px;

/* IE6 专用 */
*height: 100px;  

/* IE7 专用 */
*+height: 100px;

/* IE7、FF 共用 */
height: 100px !important;

/* IE6 7 8 9 10通用 */

height: 100px\9;

(1)*:  IE6+IE7都能识别*,而标准浏览器FF+IE8是不能识别*的;

(2)!important: 除IE6不能识别 !important外,  FF+IE8+IE7都能识别!important ;

(3)_ : 除IE6支持_ 外,  FF+IE8+IE7都不支持_;

(4)\9:所有IE浏览器都识别(IE6、IE7、IE8、IE9)

.test{ /* 1. */
        /* color:#09F\0; 以前是IE8/9, 现在10也支持 */
        color:#09F\0/; /* 以前是IE8 only, 现在IE9/10也支持. 如要排除IE9需要使用下面的rule重设IE9样式 */
}
@media all and (min-width:0) { /* 2. */
    .test{color:red\9; }/* IE9 only, 现在IE10也支持 */
    /* Ps:老外的方法都是\0,根本没考虑Opera */
}
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { /* 3. */
   .test { color: green; } /* IE10+ */
}
:root .test { color:#963\9; } /* 以前IE9 only, 现在10也支持, 优先级高于@media, 优先级太高, 尽量少用 */

 

3. 识别IE10

1) 特性检测:@cc_on

我们可以用IE私有的条件编译(conditional compilation)结合条件注释来提供针对ie10的Hack:该脚本里面的IE排除条件注释,以确保IE6-9不承认它,然后它功能检测到了名为@ cc_on。在这里:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<!--[if !IE]><!--<script>
if (/*@[email protected]*/false) {
    document.documentElement.className+=‘ ie10‘;
}
</script><!--<![endif]-->
</body>
</html>

用法

.ie10 .example {
   /* IE10-only styles go here */
}

2)@media -ms-high-contrast

IE10支持媒体查询,然后也支持-ms-high-contrast这个属性,所以,我们可以用它来hack ie10:

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

3) @media 0

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

 

参考:

http://feilong.org/ie7-ie8-ie6-firefox-css-hack

http://www.fantxi.com/blog/archives/ie8-ie9-css-hack/

http://www.wufangbo.com/ie10-css-hack/

时间: 2024-10-09 22:06:51

IE 兼容性写法的相关文章

透明度兼容性写法

透明度兼容性写法: 低版本IE: 1 filter:alpha(opacity:80); 其他标准浏览器(ff chrome 高版本IE) 1 opacity:0.8;

js-事件1_获取鼠标坐标clientX+scrollLeft及兼容性写法_跟随鼠标移动的divs

一.获取鼠标坐标 clientX:鼠标到可视区边缘的距离:    scrollLeft:滚动条到页面顶端的距离(不可视区的距离) 兼容性写法: var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;      var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; 跟随鼠标移动的divs,

CSS浏览器兼容性写法小结

CSS浏览器兼容性写法小结 *        , ie6,ie7可以识别: _和- ,  ie6可以识别: !important  ,表示高优先级,ie7及以上,firefox都支持,ie6认识带!important的样式属性,但不认识!important的优先级: -webkit- ,针对safari,chrome浏览器的内核CSS写法 -moz-,针对firefox浏览器的内核CSS写法 -ms-,针对ie内核的CSS写法 -o-,针对Opera内核的CSS写法

常用原生JS方法总结(兼容性写法)

①添加事件方法 1 2 3 4 5 6 7 8 9 addHandler:function(element,type,handler){     if(element.addEventListener){//检测是否为DOM2级方法         element.addEventListener(type, handler, false);     }else if (element.attachEvent){//检测是否为IE级方法         element.attachEvent("

Javascript selection的兼容性写法介绍

本文为大家讲解下Javascript selection的兼容性写法,感兴趣的朋友可以参考下 function getSelectedText() { //this function code is borrowed from: http://www.codetoad.com/javascript_get_selected_text.asp var txt = ""; if (window.getSelection) { txt = window.getSelection(); } e

JavaScript数组方法的兼容性写法 汇总:indexOf()、forEach()、map()、filter()、some()、every()

ECMA Script5中数组方法如indexOf().forEach().map().filter().some()并不支持IE6-8,但是国内依然有一大部分用户使用IE6-8,而以上数组方法又确实非常好用.在过去,我会为了兼容性尽量不用这些方法.但是,总不能为了旧的丢了新的吧?!虽然说jQuery已经集成好了不少语法糖,但jQuery体积太庞大,作为一名志于体面的前端儿得知道原生的兼容性写法要怎么写.于是这几天,我开始在琢磨这些方法的兼容性写法.其实并不难,就是以前不够自信不敢写.写完以后,

访问关系兼容性写法

在IE678不支持previousElementSibling和nextElementSibling: 在IE678支持   previousSibling和nextSibling: 兼容性写法: var pre=div.previousElementSibling||div.previousSibling; var next=div.nextElementSibling||div.nextSibling; 在IE678不支持firstElementChild和lastElementChild:

Event对象跨浏览器兼容性写法

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

css样式对于ie和火狐兼容性写法1

前台样式最烦人的就是各种浏览器跟分辨率的 兼容问题 首先需要了解各个浏览器之间样式在哪几方面容易出问题 IE支持自定义光标文件cursor:url()IE支持自定义滚动条颜色风格IE6中的select有永远处在最上的bug,而且css对select不起作用. 在form中,IE支持label,包括文字和图片:但是火狐不支持图片的label,点击图片不能让label for的radio或者checkbox产生效果. IE和火狐都是支持onscroll事件的,但是火狐中textarea对此事件不支持

JavaScript中关于获取浏览器可视窗口的几个兼容性写法的理解

1.浏览器可视窗口的概述: 浏览器可视区域不是网页的body的大小.可视区指的是浏览器减去上面菜单栏.工具栏,下面状态栏和任务栏,右边滚动条(如果有的话)后的中间网页内容的单页面积大小.而body大小是随着内容调整而变动的,可大可小.如果有滚动条的话,body的要大于可视区 2.不同浏览器或版本的不同写法: 对于IE9+.Chrome.Firefox.Opera 以及 Safari(window对象属性不支持IE8及以下浏览器): window.innerHeight - 浏览器窗口的内部高度