gpt4 book ai didi

javascript - 通过 SVG 背景传递鼠标事件

转载 作者:行者123 更新时间:2023-11-29 10:04:33 25 4
gpt4 key购买 nike

我有两个 SVG 元素,每个都覆盖整个屏幕。

html,
body {
height: 100%;
}

svg {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
<body>
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
<rect x=0 y=0 width=50 height=50 fill='#ff0000' onclick="console.log(1)"></rect>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
<rect x=40 y=40 width=50 height=50 fill='#00ff00' onclick="console.log(2)"></rect>
</svg>
</body>

即使方 block 不重叠,点击事件也永远不会传递给红色方 block ,因为带有绿色方 block 的 SVG 会覆盖整个屏幕并捕获任何点击事件。有没有什么办法可以在这两个方 block 上都有点击事件,而不是在同一个 SVG 中?

类似 How can I pass ONLY clicks through a SVG with pointer-events? 的解决方案非常擅长将点击事件传递到红色方 block ,但前提是您可以丢弃绿色方 block 上的所有事件。

最佳答案

只需将 pointer-events none 添加到 svg 标签即可。并在 svg 内的所有其他内容上自动添加指针事件。仅使 svg 内的元素可点击,而不是父 sv​​g 标签。

在 chrome 中工作。

html,
body {
height: 100%;
}

svg {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
pointer-events:none;
}
svg *{
pointer-events:auto;
}
<body>
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
<rect x=0 y=0 width=50 height=50 fill='#ff0000' onclick="console.log(1)"></rect>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
<rect x=40 y=40 width=50 height=50 fill='#00ff00' onclick="console.log(2)"></rect>
</svg>
</body>

关于javascript - 通过 SVG 背景传递鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46534633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com