!important大法

IE6的对css标准化的支持的不尽人意总叫人十分的恼火,比如我今天帮别人做blog的模板的时候,在FF下明明显示好好的,可是跑到IE6下一看,严重错位。怪自己平时对web标准化修炼不够,解决不了。第一感觉是想到了IE hack的if语句,可是这样的话就意味着要重新建立一个.css文件,这可不好,有没有办法在同一个.css文件里面定义样式来区别FF和IE6呢?这时候搜索到了!important语句。我发现
#div{
background-color: red !important;
background-color: blue;
}


以上的定义在IE6中背景色变成了蓝色而不是红色,而在FF下是红色。看来这个!important能解决我的问题。继续搜索了下!important的作用,原来!important声明在IE6中并不是绝对的,它会被之后的同名属性定义所替换。也就是说在上面的例子中,IE6所应用的是最后一个背景色的值,即“blue”;而在FF中背景色的值为“red”。
还有一种方法,就是IE浏览器可以识别“>”等一些符号,如“~”、“`”、“<”等,都只有IE可以识别,但是不合理,!important是符合标准的。所以 #div{
background-color: red;
>background-color: blue;
}

在FF中得到的是背景色红色,而在IE中得到的背景色是蓝色,根据样式重定义的规则,如果浏览器可以识别“>”,则应该得到的蓝色的背景,因此可以知道“>”只有IE可以识别。

这样,我们就可以把FF和IE的样式分离开。

  • 卡卡

    原来你也用FF 我的很漂亮

    • guaniu

      呃,你是指你的什么很漂亮。