LI的onmouseover(onmouseout)在IE6下的非正常触发
时间:2010-10-14 来源:微夜风
<ul>
<li onmouseover="alert('contains subnode');">
<span>Hi, move mouse on</span>
</li>
<li onmouseover="alert(mouse on li);">
move mouse on,。。。。。。。。。。撑开
</li>
</ul>
元素中含有子元素时,onmouseover与onmouseout会在子元素与父元素之间反复触发,这个问题已经有很多解决方案,在此不再讨论。
今天遇到奇怪的问题,在IE6下,上边的代码,第一个li的mouseover只有在鼠标移动到span对象上或者是li的上边框时才会触发,百思不解。
后来发现如果为li添加个“style=''”,也就是设置height或者width之后就可以正常触发,猜测可能是inlin元素与block元素的问题,把li设置为display: inline-block,正常工作。查看了下li在不同浏览器下的解释,有半内联之说,不过感觉依然模糊。照我的理解,纵然是inline元素,鼠标移到边框内时,mouseover也应该正常触发。
正常工作代码如下:
<ul>
<li style="display: inline-block;" onmouseover="alert('contains subnode');">
<span>Hi, move mouse on</span>
</li>
<li onmouseover="alert(mouse on li);">
move mouse on
</li>
</ul>
<li onmouseover="alert('contains subnode');">
<span>Hi, move mouse on</span>
</li>
<li onmouseover="alert(mouse on li);">
move mouse on,。。。。。。。。。。撑开
</li>
</ul>
元素中含有子元素时,onmouseover与onmouseout会在子元素与父元素之间反复触发,这个问题已经有很多解决方案,在此不再讨论。
今天遇到奇怪的问题,在IE6下,上边的代码,第一个li的mouseover只有在鼠标移动到span对象上或者是li的上边框时才会触发,百思不解。
后来发现如果为li添加个“style=''”,也就是设置height或者width之后就可以正常触发,猜测可能是inlin元素与block元素的问题,把li设置为display: inline-block,正常工作。查看了下li在不同浏览器下的解释,有半内联之说,不过感觉依然模糊。照我的理解,纵然是inline元素,鼠标移到边框内时,mouseover也应该正常触发。
正常工作代码如下:
<ul>
<li style="display: inline-block;" onmouseover="alert('contains subnode');">
<span>Hi, move mouse on</span>
</li>
<li onmouseover="alert(mouse on li);">
move mouse on
</li>
</ul>
相关阅读 更多 +