`

区分IE6、IE7、IE8及标准浏览器——条件注释<html>

阅读更多
IE6, IE7, Firefox, Opera , Safari 的 CSS Hacks

ie6将元素悬停
.ie6 {
top: expression(eval(document.compatMode && document.compatMode=='CSS1Compat') 
     ? documentElement.scrollTop +(documentElement.clientHeight-this.clientHeight-20) 
     : document.body.scrollTop +(document.body.clientHeight-this.clientHeight-20)); /*底端*/
top: expression(eval(document.documentElement.scrollTop));/*顶端*/
}


ie6 png透明兼容
//除ie6
.face1Bg{background:url(images/1.png) no-repeat !important;}
//兼容ie6
.face1Bg{*filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src="images/1.png") !important;*background:none !important;}

IE系列:

div { +property:value; } 在属性名前加上加号”+”,这个Hack只有IE系列可以识别.
div { *property:value; } 在属性名前加上星号”*”,这个Hack只有IE系列可以识别.
div { _property:value; } 在属性名前加上下划线”_”,这个Hack只有IE6 识别.
background-color:red\0; /* ie 8/9*/
background-color:blue\9\0; /* ie 9*/

IE的if条件Hack
<!–[if IE]>Only IE <![endif]–> \\所有的IE可识别
<!–[if IE 5.0]> Only IE 5.0 <![endif]–> \\只有IE5.0可以识别
<!–[if gt IE 5.0]> Only IE 5.0+ <![endif]–> \\IE5.0包换IE5.5都可以识别
<!–[if lt IE 6]> Only IE 6- <![endif]–> \\仅IE6可识别
<!–[if gte IE 6]> Only IE 6/+ <![endif]–>\\ IE6以及IE6以下的IE5.x都可识别
<!–[if lte IE 7]> Only IE 7/- <![endif]–>\\ 仅IE7可识别


Firefox:

*:lang(lang) div { property:value !important; } 用伪类lang(语言)再加上!important进行定义的话,目前只有Firefox可以识别.
div, x:-moz-any-link { property:value; } 目前只有Firefox可以识别.

Safari:

div:empty { property:value !important; } 用伪类empty再加上!important进行定义的话,目前只有Safari可以识别.

Opera:

@media all and (min-width: 0px){ div { property:value; } } 利用特殊继承法进行定义的话,目前只有Opera可以识别.


由于万恶的IE(尤其指IE6和IE7),我们在页面重构时不免要对其进行各种bug修复及差异化处理。在标准浏览器[1]中可实现的效果在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)。
标准浏览器[1]:本文指Chrome、Safari、Firefox及Opera等支持CSS标准属性的浏览器。

http://lightcss.com/best-way-to-different-browser-for-css/区分IE6、IE7、IE8及标准浏览器——条件注释<html>
分享到:
评论

相关推荐

    JSP教程

    表单编辑&lt;br&gt;JSP语法(1)——HTML注释&lt;br&gt;JSP语法(2)——隐藏注释&lt;br&gt;JSP语法(3)——声明&lt;br&gt;JSP语法(4)——表达式&lt;br&gt;JSP语法(5)——Scriptlet&lt;br&gt;JSP语法(6)——Page 指令&lt;br&gt;JSP语法(7)——Taglib ...

    Visual C++.NET编程技术体验

    对话框高级应用&lt;br&gt;7.2.2 示例——实现无模式对话框&lt;br&gt;7.4.5 示例——使用模式属性表及向导属性表&lt;br&gt;7.5.4 示例——鼠标敏感文字&lt;br&gt;第8章 GDI+图形编程&lt;br&gt;本章示例通常含有多段被注释的演示代码,请读者查看...

    Visual C++.NET编程技术体验__实例源码

    对话框高级应用&lt;br&gt;7.2.2 示例——实现无模式对话框&lt;br&gt;7.4.5 示例——使用模式属性表及向导属性表&lt;br&gt;7.5.4 示例——鼠标敏感文字&lt;br&gt;第8章 GDI+图形编程&lt;br&gt;本章示例通常含有多段被注释的演示代码,请读者查看...

    ie6 ie7 ff浏览器兼容

    该标题明确指出了文章关注的核心问题——即确保网页能在IE6、IE7及Firefox等浏览器中正确显示。这意味着开发者需要采取一定的措施来适配这些浏览器,确保无论用户使用何种浏览器,都能获得一致的视觉体验。 #### ...

    浏览器兼容 谷歌IE8.js,IE9.js下载

    --[if lt IE 8]&gt;`用于确保只有在IE8及以下版本的浏览器中才会加载对应的脚本,避免在现代浏览器中造成额外的性能开销。 需要注意的是,虽然`IE8.js`和`IE9.js`可以提高老版本IE的兼容性,但它们并不是万能的解决...

    ie9以下老浏览器不支持HTML5的解决方法

    5. **优化CSS**:通过使用条件注释或CSS Hack技术来为IE9及以下版本提供专有的CSS样式,以解决布局和显示问题。 - **示例代码**: ```css /* IE6 to IE8 */ .element { behavior: url(/path/to/PIE.htc); } `...

    ie6与ie7 8区别

    ### IE6、IE7与IE8的区别 #### 浏览器兼容性问题解析 随着Web技术的不断发展,浏览器之间的差异也日益明显。特别是在早期的浏览器版本中,如Internet Explorer(简称IE)的不同版本之间,存在着显著的差异。本文将...

    ie6_ie7_ie8_ff(火狐)浏览器兼容性

    在IT行业的前端开发领域,浏览器兼容性一直是一个关键议题,特别是在处理旧版浏览器如IE6、IE7、IE8以及火狐(Firefox)时。本文将深入探讨这些浏览器的兼容性问题,以及如何通过特定的技术手段来实现跨浏览器的一致...

    浏览器兼容之旅第一站:如何在页面中创建IE条件注释

    这种条件注释的语法是IE浏览器独有的,因此在其他浏览器中,它们将被当作普通注释处理,不会对页面有任何影响,这一点是兼容性上的一个优势。 IE条件注释的使用格式通常是这样的: ```html &lt;!--[ifIE]&gt;IE专用代码&lt;!...

    检查浏览器IE6提示升级

    在互联网技术日新月异的今天,老旧的浏览器版本逐渐被淘汰,其中,IE6(Internet Explorer 6)作为一款发布于2001年的浏览器,因其安全性和性能问题,已经无法满足现代网页标准的需求。标题提到的“检查浏览器IE6...

    Firefox, IE5, IE5.5, IE6, IE7, IE8多种浏览器兼容的问题

    ### Firefox, IE5, IE5.5, IE6, IE7, IE8 多种浏览器兼容的问题 在早期的Web开发阶段,不同的浏览器之间存在显著的技术差异,这导致了跨浏览器兼容性问题的出现。本篇文章将针对Firefox、IE5、IE5.5、IE6、IE7以及...

    IE6、IE7、IE8对css和js支持方面差异的研究

    - IE8中的`&lt;ul&gt;`元素间的间距比IE6和IE7大。 6. **下划线支持**: - IE6支持下划线,而IE7不支持,这是一个值得注意的文本样式差异。 7. **Iframe中的事件坐标**: - IE8中的`event.x`返回的是最外层窗口的x...

    css区别IE和非IE浏览器

    使用条件注释区分IE版本 一种常见的方法是利用HTML中的条件注释来加载特定版本IE的样式表。例如,可以为IE6到IE9分别提供不同的样式表: ```html &lt;!--[if IE 6]&gt; &lt;link rel="stylesheet" href="ie6.css"&gt; &lt;!...

    html判断IE版本

    &lt;title&gt;HTML判断IE版本&lt;/title&gt; &lt;style&gt; .ie8-and-below { display: none; } &lt;/style&gt; &lt;script&gt; var ieVersion = getIEVersion(); if (ieVersion &lt;= 8) { document.documentElement.className += ' ie8-...

    IE 条件注释详解总结(附实例代码)

    IE 条件注释是微软在 Internet Explorer 浏览器中引入的一种非标准特性,用于在 HTML 文档中根据浏览器版本执行特定的代码块。这些注释对于开发者来说,特别是在处理浏览器兼容性问题时,是一个强大的工具,尤其是在...

    简单CSShack:区分IE6、IE7、IE8、Firefox、Opera().pdf

    在《简单CSShack:区分IE6、IE7、IE8、Firefox、Opera》中,作者介绍了两种主要的方法来针对这些浏览器进行CSS样式区分。 方法一主要依赖于特殊的CSS选择器来区分浏览器。以下是对四种特殊符号的测试结果: 1. `&gt;`...

    完美解决IE(IE6/IE7/IE8)不兼容HTML5

    1. **使用HTML5shiv**: HTML5shiv是一个JavaScript库,主要用于让IE6-8浏览器识别HTML5的新的元素标签,如&lt;section&gt;、&lt;article&gt;、&lt;header&gt;等。它通过创建这些元素的脚本模拟实现,使CSS可以正常应用到这些元素上。 ...

    Java JDK实例宝典

    &lt;br&gt;第1章 Java基础 &lt;br&gt;1.1 转换基本数据类型 &lt;br&gt;1.2 Java的运算符 &lt;br&gt;1.3 控制程序的流程 &lt;br&gt;1.4 计算阶乘 &lt;br&gt;1.5 实现命令行程序 &lt;br&gt;第2章 Java面向对象程序设计 &lt;br&gt;2. 1 复数类 &lt;br&gt;2. 2 equals.chashCode...

    div错位解决IE6IE7IE8样式不兼容问题

    特别是在早期浏览器版本中,如Internet Explorer 6(IE6)、IE7 和 IE8,由于这些浏览器对于CSS的支持存在较大差异,导致网页在不同浏览器中的显示效果大相径庭。本文将详细介绍如何解决div错位问题以及针对IE6、IE7...

    IE6,IE7,IE8兼容性问题

    ### IE6, IE7, IE8 兼容性问题详解 #### 一、引言 在Web开发过程中,确保网站能够在各种不同的浏览器中正常显示是非常重要的。尤其是在早期的Web时代,Internet Explorer(简称IE)系列浏览器占据着重要的市场份额...

Global site tag (gtag.js) - Google Analytics