IE里关于CSS的优先级的bug(三)
2009-05-05 11:50
381 查看
.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里面看下面的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb18030" />
<title>IE里链接的伪类有bug</title>
<style type="text/css">
<!–
.orange_link .orange_link a { color: orange;}
a:hover{ color: red;}
.green_link .green_link a { color:blue;}
–>
</style>
</head>
<body>
<div class="orange_link">
<div class="orange_link">
<a href="http:///">把鼠标移到上面来(.orange_link .orange_link a)</a>
</div>
</div>
<div class="green_link">
<div class="green_link">
<a href="http:///">把鼠标移到上面来(.green_link .green_link a)</a>
</div>
</div>
</body>
</html>
提示:您可以修改代码之后再运行
可以看到,“.green_link .green_link a”在“a:hover”后面,于是就生效了,而“.orange_link .orange_link a”在前面,就没生效。所以,它们是一个优先级的哦。
好了,最诡异的来了。我们试试看“.orange_link .orange_link .orange_link a”和“a:hover”的优先级。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb18030" />
<title>IE里链接的伪类有bug</title>
<style type="text/css">
<!–
.orange_link .orange_link .orange_link a { color: orange;}
a:hover{ color: red;}
–>
</style>
</head>
<body>
<div class="orange_link">
<div class="orange_link">
<div class="orange_link">
<a href="http:///">把鼠标移到上面来(.orange_link .orange_link .orange_link a)</a>
</div>
</div>
</div>
</body>
</html>
提示:您可以修改代码之后再运行
结论是: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
相关文章推荐
- IE里关于CSS的优先级的bug(一)
- IE里关于CSS的优先级的bug(二)
- 关于IE的bug(CSS)
- 关于IE的bug(CSS)-续
- 关于IE的BUG(CSS)
- [CSS]打败 IE 的葵花宝典:CSS Bug Table
- css 优先级的bug
- 打败 IE 的葵花宝典:CSS Bug Table
- 关于居中布局和IE双倍边距bug
- css中的关于margin-top,position和z-index的一些bug解决方案
- 关于css的优先级问题
- IE CSS Bug及解决方案参考手册
- CSS基础篇--CSS之IE浏览器的hasLayout,IE低版本的bug根源
- 解决IE下CSS背景图片闪烁的Bug
- 关于IE和Firefox中javascript和css的一些区别
- css更改select样式关于ie的兼容
- IE中伪类:hover的使用及BUG,以及如何在IE6中进行修正(CSS)
- 黄聪:DIV+CSS建站经验总结,不同版本IE下CSS布局bug问题(IE5、IE6、IE7、IE8、火狐Firefox兼容)
- IE的CSS Bug列表(IE6,IE7和IE8)
- 解决IE下CSS背景图片闪烁的Bug