IE6 IE7 IE8 IE9 IE10 Css hack及IE条件注释法
2017-03-09 15:54
295 查看
IE浏览器的csshack写法和IE条件注释语句
网络上有很多针对IE的css hack写法,但很多都缺乏实际的实战经验,今天我把我测试的结果来给大家分享下,注意:你们最好还是自己再去测试一次。
条件注释只能用于IE5以上。
如果你安装了多个IE,条件注释将会以最高版本的IE为标准。
条件注释的基本结构和HTML的注释(<!– –>)是一样的。因此IE以外的浏览器将会把它们看作是普通的注释而完全忽略它们。
IE将会根据if条件来判断是否如解析普通的页面内容一样解析条件注释里的内容。
lt : less than,选择条件版本以下版本,不包含条件版本
gte : greater than or equal,选择条件版本以上版本,包含条件版本
lte : less than or equal,选择条件版本以下版本,包含条件版本
! : 选择条件版本以外所有版本,无论高低
下面的代码是在非IE浏览器下运行的条件注释
if 条件语句
XHTML
由于万恶的IE6和IE7,我们在页面重构时不免要对其进行各种bug修复及差异化处理。在标准浏览器中可实现的效果在IE里却有各种离奇问题,例如IE6、IE7不能良好应对的inline-block和.clearfix问题,好在大部分问题已经有了足够的总结和途径。废话不多说,下面是一些方法区分浏览器的方法和我的看法。
CSS Hack
直接在CSS文件中写CSS Hack是非常直观的区分方法。区分不同IE版本的hack代码为
#content{
background:red; /* 所有浏览器 */
background:orange\9; /* 所有IE浏览器 */
*background:yellow; /* IE7和IE6 */
+background:green; /* IE7 */
_background:blue; /* IE6 */
}
还有一些hack不太实用,就不一一列举了。
CSS Hack的缺点是CSS文件无法通过W3C验证,代码阅读时会很奇怪。
条件注释CSS文件
条件注释是写在html里的只会被IE识别的代码,一般在<head>区域通过不同的条件注释导入不同的CSS,不同的IE浏览器会引用不同的CSS。下面的4段注释依次表示"在IE下使用"、“低于IE8时使用”、“IE7时使用”、“IE6时使用”:
<!--[if IE]>
<link rel="stylesheet" href="/ie-all.css" type="text/css" media="screen" />
<![endif]-->
<!--[if lt IE 8]>
<link rel="stylesheet" href="/ie.css" type="text/css" media="screen" />
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" href="/ie7.css" type="text/css" media="screen" />
<![endif]-->
<!--[if IE 6]>
<link rel="stylesheet" href="/ie6.css" type="text/css" media="screen" />
<![endif]-->
由于IE8下CSS问题较少,一般只需要为IE6、7写一点修正代码。如果需要,可以在ie.css里用CSS Hack对IE6/7进行差异处理。
<!--[if lt IE 8]>
<link rel="stylesheet" href="/ie.css" type="text/css" media="screen" />
<![endif]-->
条件注释CSS文件的缺点是会增加至少1次http请求,影响渲染速度,而且维护时不够方便。
条件注释<html>
条件注释<html>跟上面的方法原理一样,只不过这里是给<html>注释不同的class。
<!--[if lt IE 7 ]> <html class="ie6"> <![endif]-->
<!--[if IE 7 ]> <html class="ie7"> <![endif]-->
<!--[if IE 8 ]> <html class="ie8"> <![endif]-->
<!--[if IE 9 ]> <html class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class=""> <!--<![endif]-->
这样在CSS中使用下面的代码即可区分版本
#content{background:red;}
.ie9 #content{background:orange;}
.ie8 #content{background:yellow;}
.ie7 #content{background:green;}
.ie6 #content{background:blue;}
你也可以增加诸如.ltie8这样的class来实现更方便的版本分组管理。这个方法不会增加http请求,而且不需要任何hack。
毫无疑问,最好的办法就是用条件注释<html>为CSS提供区分。所有CSS文件可以合并在一起,ie的fix代码与正常规则临近,便于维护,而且没有hack可以让代码符合标准(使用zoom、私有CSS3属性依旧无法通过验证T_T)。
标准浏览器:本文指IE9、Chrome、Safari、Firefox及Opera等支持CSS标准属性的浏览器。
IE css hack
网络上有很多针对IE的css hack写法,但很多都缺乏实际的实战经验,今天我把我测试的结果来给大家分享下,注意:你们最好还是自己再去测试一次。1234567 | body { background: rgba(243,243,243) ; } /* 所有浏览器都支持这样的写法*/body { _background: rgb(243,243,243) ; } /* 只有IE6才支持这样的写法*/body { *background: rgb(243,243,243) ; } /* 所有IE浏览器都支持这样的写法*/body { +background: rgb(243,243,243) ; } /* 只有IE6和IE7浏览器能支持这样的写法*/body { -background: rgb(243,243,243) ; } /* 据说也只有IE6浏览器能支持,我没测试过*/body { *+background: rgb(243,243,243) ; } /* IE7和IE10浏览器能支持*/body { background: rgb(243,243,243) \0; } /* \零 的写法只有IE8及以上浏览器可以支持*/ |
IE条件注释语句
一、条件注释简介
IE中的条件注释(Conditional comments)对IE的版本和IE非IE有优秀的区分能力,是WEB设计中常用的hack方法。条件注释只能用于IE5以上。
如果你安装了多个IE,条件注释将会以最高版本的IE为标准。
条件注释的基本结构和HTML的注释(<!– –>)是一样的。因此IE以外的浏览器将会把它们看作是普通的注释而完全忽略它们。
IE将会根据if条件来判断是否如解析普通的页面内容一样解析条件注释里的内容。
二、条件注释属性
gt : greater than,选择条件版本以上版本,不包含条件版本lt : less than,选择条件版本以下版本,不包含条件版本
gte : greater than or equal,选择条件版本以上版本,包含条件版本
lte : less than or equal,选择条件版本以下版本,包含条件版本
! : 选择条件版本以外所有版本,无论高低
三、条件注释使用方法
注意把代码中的<>换成英文中相应的大于或小于号1 2 3 4 5 6 | <!--[if IE 5]>仅IE5.5可见<![endif]--> <!--[if gt IE 5.5]>仅IE 5.5以上可见<![endif]--> <!--[if lt IE 5.5]>仅IE 5.5以下可见<![endif]--> <!--[if gte IE 5.5]>IE 5.5及以上可见<![endif]--> <!--[if lte IE 5.5]>IE 5.5及以下可见<![endif]--> <!--[if !IE 5.5]>非IE 5.5的IE可见<![endif]--> 一、通用区分方式: IE6、IE7能识别*,标准浏览器(如FF)不能识别*; IE6能识别*,但不能识别 !important; IE7能识别*,也能识别 !important; IE8能识别\0,不能识别*,+,_,* 加!important; FF不能识别*,但能识别 !important; 例如style=”*width:10px!important; width:20px;”,其在IE7下宽度为10px,在IE6下宽度是20px. 其中还有如下三种写法: 第一种 width:100px; /* FireFox及其他浏览器 */ width:200px\0; /* IE8能识别\0*/ *width:300px!important; /* ,IE7 既能能识别*号,也能识别important */ *width:400px; /* IE6也能识别*号 */ /*Mr.Think提示:请注意书写顺序@MrThink.net*/ 第二种 width:100px; /* FireFox及其他浏览器 */ width:200px\0; /* IE8能识别\0*/ *width:300px; /* IE7也能识别*号 */ _width:400px; /* IE6能识别下划线*/ /*Mr.Think提示:请注意书写顺序@MrThink.net*/ 第三种 width:100px; /* FireFox及其他浏览器 */ width:200px\0; /* IE8能识别\0*/ +width:300px; /* +只识别IE7 */ _width:400px; /* IE6能识别下划线*/ /*Mr.Think提示:请注意书写顺序@MrThink.net*/ 二、不常见的HACK(OP表示Opera,SA表示Safari),其中第3条比较实用 1..color1{ color:#F00; color/*\**/:#00F /*\**/}/*IE6,IE7,IE8,FF,OP,SA识别*/ 2..color2{ color:#F00; color /*\**/:#00F /*\9**/}/*IE7,IE8,FF,OP,SA识别*/ 3..color3{ color:#F00; color/*\**/:#00F \9}/*IE6,IE7,IE8识别*/ 4..color4{ color:#F00; color /*\**/:#00F\9}/*IE7,IE8识别*//*“color”和“/*\**/”之间有个空格*/ 三、各种浏览器独立支持的hack width:100px\0;/* 支持IE8 */ _width:100px; /* 支持IE6 */ [width:100px; /* 支持IE6,7 */ +width:100px; /* 支持IE6,7 */ *width:100px; /* 支持IE6,7 */ *width:100px!important; /* 支持IE6,7, */ *+width:100px; /* 支持IE6,7, */ *+width:100px!important;/* 支持IE6,7, */ width:100px\9; /* 支持IE6,7,8 */ width:100px!important; /* 支持IE6,7,8,FF */ w\idth:100px; /*IE5.x不支持 IE6、IE7、IE8、FF支持 */ 四、IE特有的html条件注释使用规则 1.仅IE可见的写法 <!--[if IE]>此处内容只有IE可见<![endif]–> 2.仅IE6可见的写法 <!-–[if IE 6]>此处内容只有IE6.0可见<![endif]–-> 3.仅IE7可见的写法 <!–-[if IE 7]>此处内容只有IE7.0可见<![endif]–-> 4.版本区间可显示写法 <!--[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]--> <!--[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]--> <!--[if lt IE 7]> IE7以及IE7以下版本可识别 <![endif]--> <!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]--> 5.非IE可见的写法(注意:此条不符合WEB标准,但的确实用) <!--[if !IE]>此处内容只非IE可见<![endif]--> |
if 条件语句
XHTML
1 2 3 4 5 6 | <!--[if !IE]><!--> /*您使用不是 Internet Explorer*/ <!--<![endif]--> <!--[if IE 6]><!--> /*您正在使用Internet Explorer version 6或者 一个非IE 浏览器*/ <!--<![endif]--> |
由于万恶的IE6和IE7,我们在页面重构时不免要对其进行各种bug修复及差异化处理。在标准浏览器中可实现的效果在IE里却有各种离奇问题,例如IE6、IE7不能良好应对的inline-block和.clearfix问题,好在大部分问题已经有了足够的总结和途径。废话不多说,下面是一些方法区分浏览器的方法和我的看法。
主要途径
CSS Hack直接在CSS文件中写CSS Hack是非常直观的区分方法。区分不同IE版本的hack代码为
#content{
background:red; /* 所有浏览器 */
background:orange\9; /* 所有IE浏览器 */
*background:yellow; /* IE7和IE6 */
+background:green; /* IE7 */
_background:blue; /* IE6 */
}
还有一些hack不太实用,就不一一列举了。
CSS Hack的缺点是CSS文件无法通过W3C验证,代码阅读时会很奇怪。
条件注释CSS文件
条件注释是写在html里的只会被IE识别的代码,一般在<head>区域通过不同的条件注释导入不同的CSS,不同的IE浏览器会引用不同的CSS。下面的4段注释依次表示"在IE下使用"、“低于IE8时使用”、“IE7时使用”、“IE6时使用”:
<!--[if IE]>
<link rel="stylesheet" href="/ie-all.css" type="text/css" media="screen" />
<![endif]-->
<!--[if lt IE 8]>
<link rel="stylesheet" href="/ie.css" type="text/css" media="screen" />
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" href="/ie7.css" type="text/css" media="screen" />
<![endif]-->
<!--[if IE 6]>
<link rel="stylesheet" href="/ie6.css" type="text/css" media="screen" />
<![endif]-->
由于IE8下CSS问题较少,一般只需要为IE6、7写一点修正代码。如果需要,可以在ie.css里用CSS Hack对IE6/7进行差异处理。
<!--[if lt IE 8]>
<link rel="stylesheet" href="/ie.css" type="text/css" media="screen" />
<![endif]-->
条件注释CSS文件的缺点是会增加至少1次http请求,影响渲染速度,而且维护时不够方便。
条件注释<html>
条件注释<html>跟上面的方法原理一样,只不过这里是给<html>注释不同的class。
<!--[if lt IE 7 ]> <html class="ie6"> <![endif]-->
<!--[if IE 7 ]> <html class="ie7"> <![endif]-->
<!--[if IE 8 ]> <html class="ie8"> <![endif]-->
<!--[if IE 9 ]> <html class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class=""> <!--<![endif]-->
这样在CSS中使用下面的代码即可区分版本
#content{background:red;}
.ie9 #content{background:orange;}
.ie8 #content{background:yellow;}
.ie7 #content{background:green;}
.ie6 #content{background:blue;}
你也可以增加诸如.ltie8这样的class来实现更方便的版本分组管理。这个方法不会增加http请求,而且不需要任何hack。
最佳方法
毫无疑问,最好的办法就是用条件注释<html>为CSS提供区分。所有CSS文件可以合并在一起,ie的fix代码与正常规则临近,便于维护,而且没有hack可以让代码符合标准(使用zoom、私有CSS3属性依旧无法通过验证T_T)。标准浏览器:本文指IE9、Chrome、Safari、Firefox及Opera等支持CSS标准属性的浏览器。
相关文章推荐
- IE6 IE7 IE8 IE9 IE10 Css hack及IE条件注释法
- IE6 IE7 IE8 IE9 IE10 Css hack及IE条件注释法
- 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
- 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
- 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10 http://www.jb51.net/css/383986.html
- 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法 .
- 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10 (转)
- 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
- IE等主流浏览器css hack,包括IE6,IE7,IE8,IE9,firefox,chrome
- 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
- CSS Hack解决两个阵营:①IE8、IE9②IE6、IE7、FireFox
- 搞定各种IE兼容问题,IE6,IE7,IE8,IE9,IE10 -
- 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
- 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
- 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
- IE等主流浏览器css hack,包括IE6,IE7,IE8,IE9,firefox,chrome
- CSS Hack(Safari、Opera、Chrome、IE6、IE7、 IE8和IE9)
- 解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
- 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
- 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法