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

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

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

box{color:red !important;}

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

<!--
.style1 {
	color: #FF0000;
	margin:auto;
	width:500px;
	padding:50px;
	border:#000000 solid 10px !important;
	border:#FF0000 solid 10px;
}
-->

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

一位网友的发现

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

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

<!--
.style1 {
	border:#000000 solid 10px !important;

}
.style1 {
 
	border:#FF0000 solid 10px;
}
-->

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

No related posts.

此条目发表在 未分类 分类目录,贴了 , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word