CSS hack 针对IE6,IE7,firefox显示不同效果

区别不同浏览器的CSS hack写法:

区别IE6与FF:
background:orange;*background:blue;

区别IE6与IE7:
background:green !important;background:blue;

区别IE7与FF:
background:orange; *background:green;

区别FF,IE7,IE6:
background:orange;*background:green !important;*background:blue;

注:IE都能识别*;标准浏览器(如FF)不能识别*;
IE6能识别*,但不能识别 !important,
IE7能识别*,也能识别!important;
FF不能识别*,但能识别!important;
IE6IE7FF*!important


------------------------------------------------------
另外再补充一个,下划线_,
IE6支持下划线,IE7和firefox均不支持下划线 。
IE6IE7FF*!important_

于是大家还可以这样来区分IE6,IE7,firefox
: background:orange;*background:green;_background:blue;

注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面 。

一、CSS HACK
以下两种方法几乎能解决现今所有HACK.

1, !important

随着IE7对!important的支持, !important 方法现在只针对IE6的HACK.(注意写法.记得该声明位置需要提前.)
stylegt;
#wrapper
{
width: 100px!important; /* IE7 FF */
width: 80px; /* IE6 */
}
/stylegt;


2, IE6/IE77对FireFox

* html 与 *html 是IE特有的标签, firefox 暂不支持.而* html 又为 IE7特有标签.
style
#wrapper
{
#wrapper { width: 120px; } /* FireFox */
*html #wrapper { width: 80px;} /* ie6 fixed */
* html #wrapper { width: 60px;} /* ie7 fixed, 注意顺序 */
}
/style


注意:
* html 对IE7的HACK 必须保证HTML顶部有如下声明:
!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd

二、万能 float 闭合(非常重要!)

关于 clear float 的原理可参见 [How To Clear Floats Without Structural Markup]
将以下代码加入Global CSS 中,给需要闭合的div加上 style
/* Clear Fix */

.clearfix:after
{
content:.;
display:block;
height:0;
clear:both;
visibility:hidden;
}
.clearfix
{
display:inline-block;
}
/* Hide from IE Mac */
.clearfix {display:block;}
/* End hide from IE Mac */
/* end of clearfix */
/style
关于闭合浮动元素(clearing float)的方法现在已经很多了,个人认为简单实用的方法就是使用:after伪类动态的嵌入一个用于清除浮动的元素,可惜代码量太大了,看上去不够简洁 。

现在看到有个方法超级简单 。介绍一下这个方法 。原文在:http://annevankesteren.nl/2005/03/clearing-floats

这 一方面的原理是,外围元素之所以不能很好的延伸,问题出在了overflow上,因为overflow不可见(见W3C的解释) 。现在只要将给外围元素添 加一个overflow:auto,就可以解决问题,结果是除了IE,真的可以解决 。下来就要解决ID的问题了,再加上_height:1%,这 个问题就完全解决了 。

下面的例子作为比较
1、没有闭合浮动元素;2、非IE下闭合浮动元素;3、完全闭合元素 。相关代码如下:

XHTML代码:
Example Source Code [ww
w.52css.com]div id=wrap
div class=column_left
h1Float left/h1
/div
div class=column_right
h1Float right/h1
/div
/div
CSS样式:
Example Source Code [ww
w.52css.com]#wrap{ border:6px #ccc solid; overflow:auto; _height:1%;}
.column_left{ float:left; width:20%; padding:10px;}
.column_right{ float:right; width:75%; padding:10px; border-left:6px #eee solid;}【CSS hack 针对IE6,IE7,firefox显示不同效果】
三、其他兼容技巧(再次啰嗦)

1, FF下给 div 设置 padding 后会导致 width 和 height 增加, 但IE不会.(可用!important解决)
2, 居中问题.

推荐阅读