IE 8指定背景颜色改变元素行为

时间:2011-02-13 05:38:43

标签: javascript css internet-explorer

我有一个绝对定位的div,我试图触发mouseenter和mouseleave事件。在IE8 / 7中,div的背景颜色未指定(因此它默认为透明),当光标穿过div的边界时,mouseenter / leave事件不会触发,只有div的中间位置和光标位于div内的任何文本上。

当我尝试通过向div添加背景颜色来调试问题时(例如背景颜色:绿色),问题神奇地消失了。 div的盒子模型完美地受到尊重,并且鼠标中心/离开火焰就像预期的那样。只有当div的背景颜色未指定(或者甚至明确设置为透明)时,它才会表现不正常。

有什么想法吗?谷歌搜索这个IE错误/怪癖似乎什么都没有。

2 个答案:

答案 0 :(得分:4)

在光标碰到可见的东西之前,mouseenter和mouseleave没有注册。这不是正确的行为,但这是我们正在处理的资源管理器。

两种可能的解决方案:

  1. 在DIV上放一个细边框,一个与其背后的内容匹配的边框,不会被注意到。 (这不起作用;请参阅注释。)
  2. 跟踪mousemove事件并让代码确定鼠标何时进入感兴趣的区域。
  3. (已添加;请参阅注释。)将背景设为平铺的透明1x1图像。
  4. 不幸的是,这两种解决方案都非常糟糕。

    编辑:问题:mouseover和mouseout是否显示出同样奇怪的行为?

答案 1 :(得分:0)

要添加到此:在上面的答案中使用解决方案3时,onclick也会激活。总的来说,在IE中抓取透明元素上的非透明元素点击是一个很好的解决方法。