解决 IE 和 FIREFOX 的布局差别的利器:"!important"

div+css网页布局的设计者常常会被一个问题困扰着。在IE和其他(Mozilla、Opera等)浏览器里显示的效果常常会偏差2px。这是因为IE对盒之间距离的解释的bug造成的。一个技巧提示帮我们找到了解决的方法:用!important。

!important是CSS1就定义的语法,作用是提高指定样式规则的应用优先权。
语法格式{ sRule!important },即写在定义的最后面,如:

box{color:red !important;}

最重要的一点是:IE一直都不支持这个语法,而其他的浏览器都支持。我们就可以利用这一点来分别给IE和其它浏览器不同的样式定义。如:


在fIREFOX中浏览时候,能够理解!important的优先级,因此显示#000000的颜色;
在IE中浏览时候,不能够理解!important的优先级,因此显示#ffOOOO的颜色。
可以看到,利用!important,我们可以针对IE和非IE浏览器设置不同的样式,只要在非IE浏览器样式的后面加上!important。

一位网友的发现

可能某位Web designer在写CSS代码的时候,已经为某个class写了一段代码,后来忘记了又重新写了一段并使用了!important,于是发现了这个问题(所有的CSS Hack技术几乎都来来自不经意间的发现)。

我们把上面那段简单的代码换一种写法:


基本上完全一样的写法,只不过我们把一个class为a的CSS规则分开写了两次,正是这样的写法,使IE 6产生了奇妙的变化——!important居然起作用了!
所以,在 IE 6 中书写CSS时,当同一个属性多次出现在一个大括号”{}”时,最后一条规则起作用,也就是!important被忽视;当同一个属性多次出现在不同的大括号中时,以!important属性的优先级最高。


Comments

22 responses to “解决 IE 和 FIREFOX 的布局差别的利器:"!important"”