如何处理重叠 svg 元素上的点击事件?我正在使用 Reaphael.js 库。
问题是 top <svg>
DOM 元素正在拦截鼠标事件,即使底部元素没有被任何绘图重叠。我的问题是如何使我的示例中的两个圆圈都可点击并仍然将它们保留在两个 svg 元素中?
这是我的代码:
CSS:
#container {
position: relative;
width: 200px;
height: 200px
}
#container>svg {
position: absolute !important;
top: 0;
left: 0;
}
JavaScript:
var topLayer = Raphael('container', 200, 200);
var bottomLayer = Raphael('container', 200, 200);
topLayer.circle(100, 100, 50)
.attr({
fill: 'red',
stroke: false
})
.mousedown(function(){alert('Top layer')});
bottomLayer.circle(120, 120, 50)
.attr({
fill: 'pink',
stroke: false
})
.mousedown(function(){alert('Bottom layer')});
工作 JSFiddle例子
PS:我知道我可以在单个<svg>
中实现分层DOM 元素,但事实并非如此。我的底部 SVG 元素具有缩放和平移功能,而顶部 SVG 元素应该是静态的。
最佳答案
您可以通过将其设置为 none 来操纵名为 pointer-events 的 css 属性。这将导致允许所有事件流过标有 pointer-events:none 的层。
可以看到this fiddle :https://jsfiddle.net/krul/6SmQ9/2/
#container {
pointer-events:none;
position: relative;
width: 200px;
height: 200px
}
#container>svg {
pointer-events:none;
position: absolute !important;
top: 0;
left: 0;
}
svg circle {
pointer-events:visible;
}
关于javascript - 重叠 SVG 元素上的鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18822756/