存档

作者存档

IE6鼠标闪烁的bug

2010年8月7日

碰到这个bug后,脑子里立马想到了IE6背景闪烁bug,心想很早就听说个这个bug,自己碰到还是第一次,于是按照这个思路走下去,用解决IE6背景闪烁bug的方法一试,果然有效,怀着好奇仔细研究了自己这个所谓的“IE6背景闪烁bug”的代码,却发现并非如此,我又立马意识到我正在接近“一个新的情况”…….

此bug的现象:当鼠标在文字上移动时,在IE6下鼠标形状会在“箭头”和“沙漏(等待)”2中形状中快速变化(闪烁),在其他浏览器下无此现象。

此bug的主要结构代码为:

<ul class="list-box">
    <li onmousemove="this.className='cur';" onmouseout="this.className='';">
        <strong>鼠标形状在闪烁--之路--前端开发</strong>
    </li>
</ul>

此bug的主要样式代码为:

.list-box{width:300px;}
.list-box li{cursor:pointer; vertical-align:top; zoom:1;}
strong{display:block; padding:6px 0;}
.list-box .cur{font-weight:bold;}
.cur strong{color:#ff0000; background:#ccc url(yd-n85.png) no-repeat 230px -180px;}

查看有此bug的demo

前面说过,我刚开始以为这个bug是IE6背景闪烁bug,故使用了解决IE6背景闪烁bug的方法解决了我这个bug,恩,纯属意外。查看用这种方法解决我这个bug的demo

后来通过从2个方面入手研究此bug

1.如果换成“onmouseover”事件,会怎样?? 结果是在所在所有浏览器下鼠标都不会闪烁,不管有没有背景图片请求,查看这种情况下的demo

2.如果鼠标指向时没有背景图片请求,会怎样?? 结果是在所在所有浏览器下鼠标都不会闪烁,不管是“onmousemove”事件还是“onmouseover”事件 ,查看这种情况下的demo

综合以上2种分析发现,此bug产生的2个必须同时满足的条件是使用“onmouseover”事件和鼠标指向时有背景图片请求,破坏其中任何一个条件,此bug不会产生,当然这也是解决此bug的2种方法了。

而这就是一个美丽的误会……

前端开发

对IE6下一个经典bug的补充

2010年7月11日

先说说这个经典的bug:在IE6下,如果父元素的宽度为奇数,子元素position:absolute right:0,则子元素离父元素右边实际为1px。在IE6下,如果父元素的高度为奇数,子元素position:absolute bottom:0,则子元素离父元素下边实际为1px。

补充:经过测试,在IE6下,如果父元素的宽度为奇数,子元素position:absolute right:xpx,则子元素离父元素右边实际为(x+1)px

在IE6下,如果父元素的高度为奇数,子元素position:absolute bottom:ypx,则子元素离父元素下边实际为(y+1)px

bug截图如下:

查看此bug

前端开发