【发布时间】:2026-01-03 12:05:03
【问题描述】:
我在显示为半圆形的 div 上有一个 mouseleave 事件侦听器。当我移出圆圈时鼠标离开不会触发,但指针仍在 div 的透明矩形区域内。
我使用的 div 包含 SVG 元素,所以我不想使用 <circle> 或 <svg> 路径解决方案。我不是在寻找解决方法(因为我已经有了),只是想特别想知道 <div> 元素。
有没有办法让鼠标离开可见区域时触发?
半圆div css:
#circleDiv{
display: block;
position: absolute;
height: 300px;
width: 150px; /*half the height*/
border-radius: 150px 0 0 150px; /* half the height e.g. x 0 0 x */
background-color: lavender;
}
更新:想通了。 div 有一个透明的子 svg 组件。它超出了父 div 的可见区域的范围。只要鼠标在 div 的其中一个子元素内,即使子元素的边界超出父元素,也不会触发 leave。我知道进入子组件不会触发 mouseleave,但我不知道即使超出父级边界它们也会阻止 mouseleave。
通过将 div 的第一个子元素 svg pointer-events:none 以及之后的所有 svg 子组件设置为 pointer-events:visiblePainted 来解决此问题
【问题讨论】:
-
SVGs 和image-maps(以及标记更改)都浮现在脑海中。但是,如果没有用例,就无法知道他们的建议是否有用。 -
我还要注意(尽管可能仅供将来参考)您的代码在 Google Chrome 版本 51.0.2704.103 m(64 位)中很好 - 进入/离开彩色区域确实会触发预期处理程序。
-
看到这个answer
标签: javascript html css