日期:2014-05-17  浏览次数:20564 次

CSS 中 !important & *

{*rule !important}这个css规则当今在网页制作的时候的普及已经非常流行了,以前我对它的理解就停留在‘浏览器是否识别阶段’ 而没有真正去研究过,可是现在发生了变化。众所周知,!important这个规则对Ie6.0,Ie7.0和Firefox能写hack,现在就来讲解 这是什么原理:
??????? *对于Ie系列浏览器都能够识别, firefox 浏览器则不能识别;
???????? !important只有Ie7.0和firefox可以识别,但是Ie6.0不能成功应用.

???? (1)区别ie与firefox的hack为:border:2px solid #f00;*border:1px solid #f00;
???? (2)区别Ie6.0 与Ie7.0、firefox的hack为:border:1px solid #f00!important;border:2px solid #f00;

???? 在(1)中,之所以把*放在后面是因为ff不识别*而导致只对它设置了一次border;而ie 系列进行了两次
???? border设置后,后一个属性覆盖了前一个属性,故为一像素的边框。

???? 在(2)中,之所以把!important放在第一个border 设置,是因为它把这次border的优先级提高了,即使
???? 后面在一次甚至在N次设置border 也无效,但是Ie6.0对这个规则不接受,而导致它应用了第二次的
???? border 设置,也就是第二次覆盖了第一次的这一原理, 并不是它不识别!important;所以它的border
???? 为2 像素的红框.

这是一个简单的应用:
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
div{
width:800px;
height:250px;
background-color:yellow!important;/*提升指定样式规则的应用优先权*/
background-color:red;
border:3px solid #000!important;/*firefox*/
*border:5px solid #f00!important;/*Ie7.0*/
border:1px solid #000;/*Ie6.0*/
}
</style>
</head>

例一:

CSS

#box {
???? color: red !important ;
???? color : blue ;
}

HTML

< div id ="Box" > 在不同的浏览器下,这行字的色应该不同! </ div >

??????????这个例子应该是大家经常见到的important的用法了,在IE环境下,这行字是蓝色,在firefox下,为红色,其用法不再多说了,看下一个例子。


例二:
CSS

1 #box div