Bookmark and Share

Lee's 程序人生

HTML CSS Javascript XML AJAX ATLAS C# C++ 数据结构 软件工程 设计模式 asp.net Java 数字图象处理 Sql 数据库
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

转:IE里关于CSS的优先级的bug(三)

Posted on 2009-01-14 14:03  analyzer  阅读(323)  评论(0编辑  收藏  举报
.orange_link .orange_link .orange_link a { color: orange; }
.orange_link .orange_link a { color: orange;}
a:hover{ color: red;}
.orange_link a { color: orange;}

根据上次的结论在IE6里,“a:hover”的优先级比“.orange_link a”高。说起来,a:hover还真是终极霸王的感觉~哈。

但是呢,很好玩的事情来咯。在IE6里面,“.orange_link .orange_link a”的优先级和“a:hover”一样高。请在IE6里面看下面的代码:


提示:您可以修改代码之后再运行

可以看到,“.green_link .green_link a”在“a:hover”后面,于是就生效了,而“.orange_link .orange_link a”在前面,就没生效。所以,它们是一个优先级的哦。

好了,最诡异的来了。我们试试看“.orange_link .orange_link .orange_link a”和“a:hover”的优先级。


提示:您可以修改代码之后再运行

结论是:IE6里,“.orange_link .orange_link .orange_link a”(三个class)的优先级比“a:hover”要高
以上的结论在:visited和:active也成立,但是:link没有这样的bug。另外IE7和IE8beta1没有这个bug。

最后再补充一点就是,IE6中,“a#blue_link”或是“#blue_link”的优先级比a:hover要高。这点上它没有出错。

所以,在IE6里面关于链接伪类的bug真的很疯狂~~大家一定要小心。为了避免这种优先级的bug,在写CSS的时候,尽量用显式的:hover来定义样式,不要指望只用.class a就能改变a:hover。

总结一下IE6里链接伪类(:hover,:visited,:active)的优先级的bug:

a#id  或 #id
大于
.class .class .class a
大于
a:hover
等于
.class .class a
大于
.class a
我要啦免费统计