ie6下的hover
- 在CSS1中此伪类仅可用于a对象。且对于无href属性(特性)的a对象,此伪类不发生作用。
- 在CSS2中此伪类可以应用于任何对象。
a:hover span{display:inline-block;}
ie下死活就是出不来。。。
上网找了下原因。
网上确实有好多跟我碰到同样问题的人。。。。
解决方案
添加样式 a:hover{}具体的大括号里面要添加什么样式,有一定的依据但是又找不出规矩。。。期待有人解释下。。。
当a:hover {}的属性跟a {}中的是一样的时候,也就是说a:hover没有发生属性的改变,完全继承a的属性的时候,就会产生此BUG。
也就是说a:hover和a样式不同的时候才会有能触发hover的效果。
zoom, display, padding, background,border:none,position。。。
都能使得ie6 a:hover span{display:inline-block;}起作用。
但是如果
a.demo{color:green;}
a.demo1:hover{color:red;}
a.demo2:hover {border:none;}
a.demo span{display:none;}
a.demo:hover span{display:inline-block;}
demo1:ie6下a:hover span没有出来。。。
其实a:hover效果出来的时候,a:hover span的样式不一定就会出来。。。猜测是应该是触发盒模型的时候就可以了
——-华丽分割线————-
update:由于之前的demo是写在wordpress的正文中,模板引入了一个小于ie7的css样式,导致演示的结果出错。
明天4月1日,最近天气多变,注意身体健康
a:hover{} 大多数涉及能确定元素区域和位置的样式改变都可以解决这个bug,当然最简单的办法是zoom:1;至于下面的那个demo,机器上没有ie6,没测试,不过我觉得原因可能是这样的:ie6对inline-block的认识仅限于触发行内元素的haslayout。而你前面设置了display:none;这个属性并没有改变。你可以把后面的一句改下试试 a.demo:hover span {display:inline-block;*display:inline;} 这样的话,ie6中span的display属性从none变成了inline。span就显示出来了。
今天碰到个IE6的更奇怪的bug,hover的时候有效果,鼠标移出的时候反而停留在hover时候样式。
加个selector:hover{display:inline-block;}就好了,恶心啊。
试了下,border:none,也有效
嗯,ie6还是有不少的,开发时确实要考虑浏览器兼容问题。
学习了!~