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>
分享到:
相关推荐
表单编辑<br>JSP语法(1)——HTML注释<br>JSP语法(2)——隐藏注释<br>JSP语法(3)——声明<br>JSP语法(4)——表达式<br>JSP语法(5)——Scriptlet<br>JSP语法(6)——Page 指令<br>JSP语法(7)——Taglib ...
对话框高级应用<br>7.2.2 示例——实现无模式对话框<br>7.4.5 示例——使用模式属性表及向导属性表<br>7.5.4 示例——鼠标敏感文字<br>第8章 GDI+图形编程<br>本章示例通常含有多段被注释的演示代码,请读者查看...
对话框高级应用<br>7.2.2 示例——实现无模式对话框<br>7.4.5 示例——使用模式属性表及向导属性表<br>7.5.4 示例——鼠标敏感文字<br>第8章 GDI+图形编程<br>本章示例通常含有多段被注释的演示代码,请读者查看...
该标题明确指出了文章关注的核心问题——即确保网页能在IE6、IE7及Firefox等浏览器中正确显示。这意味着开发者需要采取一定的措施来适配这些浏览器,确保无论用户使用何种浏览器,都能获得一致的视觉体验。 #### ...
--[if lt IE 8]>`用于确保只有在IE8及以下版本的浏览器中才会加载对应的脚本,避免在现代浏览器中造成额外的性能开销。 需要注意的是,虽然`IE8.js`和`IE9.js`可以提高老版本IE的兼容性,但它们并不是万能的解决...
5. **优化CSS**:通过使用条件注释或CSS Hack技术来为IE9及以下版本提供专有的CSS样式,以解决布局和显示问题。 - **示例代码**: ```css /* IE6 to IE8 */ .element { behavior: url(/path/to/PIE.htc); } `...
### IE6、IE7与IE8的区别 #### 浏览器兼容性问题解析 随着Web技术的不断发展,浏览器之间的差异也日益明显。特别是在早期的浏览器版本中,如Internet Explorer(简称IE)的不同版本之间,存在着显著的差异。本文将...
在IT行业的前端开发领域,浏览器兼容性一直是一个关键议题,特别是在处理旧版浏览器如IE6、IE7、IE8以及火狐(Firefox)时。本文将深入探讨这些浏览器的兼容性问题,以及如何通过特定的技术手段来实现跨浏览器的一致...
这种条件注释的语法是IE浏览器独有的,因此在其他浏览器中,它们将被当作普通注释处理,不会对页面有任何影响,这一点是兼容性上的一个优势。 IE条件注释的使用格式通常是这样的: ```html <!--[ifIE]>IE专用代码<!...
在互联网技术日新月异的今天,老旧的浏览器版本逐渐被淘汰,其中,IE6(Internet Explorer 6)作为一款发布于2001年的浏览器,因其安全性和性能问题,已经无法满足现代网页标准的需求。标题提到的“检查浏览器IE6...
### Firefox, IE5, IE5.5, IE6, IE7, IE8 多种浏览器兼容的问题 在早期的Web开发阶段,不同的浏览器之间存在显著的技术差异,这导致了跨浏览器兼容性问题的出现。本篇文章将针对Firefox、IE5、IE5.5、IE6、IE7以及...
- IE8中的`<ul>`元素间的间距比IE6和IE7大。 6. **下划线支持**: - IE6支持下划线,而IE7不支持,这是一个值得注意的文本样式差异。 7. **Iframe中的事件坐标**: - IE8中的`event.x`返回的是最外层窗口的x...
使用条件注释区分IE版本 一种常见的方法是利用HTML中的条件注释来加载特定版本IE的样式表。例如,可以为IE6到IE9分别提供不同的样式表: ```html <!--[if IE 6]> <link rel="stylesheet" href="ie6.css"> <!...
<title>HTML判断IE版本</title> <style> .ie8-and-below { display: none; } </style> <script> var ieVersion = getIEVersion(); if (ieVersion <= 8) { document.documentElement.className += ' ie8-...
IE 条件注释是微软在 Internet Explorer 浏览器中引入的一种非标准特性,用于在 HTML 文档中根据浏览器版本执行特定的代码块。这些注释对于开发者来说,特别是在处理浏览器兼容性问题时,是一个强大的工具,尤其是在...
在《简单CSShack:区分IE6、IE7、IE8、Firefox、Opera》中,作者介绍了两种主要的方法来针对这些浏览器进行CSS样式区分。 方法一主要依赖于特殊的CSS选择器来区分浏览器。以下是对四种特殊符号的测试结果: 1. `>`...
1. **使用HTML5shiv**: HTML5shiv是一个JavaScript库,主要用于让IE6-8浏览器识别HTML5的新的元素标签,如<section>、<article>、<header>等。它通过创建这些元素的脚本模拟实现,使CSS可以正常应用到这些元素上。 ...
<br>第1章 Java基础 <br>1.1 转换基本数据类型 <br>1.2 Java的运算符 <br>1.3 控制程序的流程 <br>1.4 计算阶乘 <br>1.5 实现命令行程序 <br>第2章 Java面向对象程序设计 <br>2. 1 复数类 <br>2. 2 equals.chashCode...
特别是在早期浏览器版本中,如Internet Explorer 6(IE6)、IE7 和 IE8,由于这些浏览器对于CSS的支持存在较大差异,导致网页在不同浏览器中的显示效果大相径庭。本文将详细介绍如何解决div错位问题以及针对IE6、IE7...
### IE6, IE7, IE8 兼容性问题详解 #### 一、引言 在Web开发过程中,确保网站能够在各种不同的浏览器中正常显示是非常重要的。尤其是在早期的Web时代,Internet Explorer(简称IE)系列浏览器占据着重要的市场份额...