如何将特定事件转发到重叠的DOM元素
我有两个完全重叠的 divs
;顶层具有滚动行为,因为它具有溢出的内容,我想保持滚动行为。
基础层具有不同的单击处理程序的不同部分。图片中的框(x,y,z)。
如何在将滚动放在顶层的同时,如何为基础层有一个点击处理程序?
我尝试过CSS
Pointer-events:none;
,但它转发了所有事件, 这会导致顶层滚动的滚动。我尝试使用JavaScript手动手动
,但是 事件采购无法正常工作。
这是此处的DOM结构
<div>
<div
ref="layer2"
class="
layer2
h-96
cursor-pointer
text-2xl text-center
flex
space-x-4
items-center
justify-center
bg-green-400
"
style="width: 600px"
@click="handleLayer2"
>
<div
@click="handleSection('x')"
class="w-[200px] h-[8rem] bg-red-600 shadow-lg rounded h-24"
>
X
</div>
<div
@click="handleSection('y')"
class="w-[200px] h-[8rem] bg-red-600 shadow-lg rounded h-24"
>
Y
</div>
<div
@click="handleSection('z')"
class="w-[200px] h-[8rem] bg-red-600 shadow-lg rounded h-24"
>
Z
</div>
</div>
<div
class="
layer1
absolute
top-0
left-0
bg-pink-500
h-96
text-xl
whitespace-nowrap
text-center
opacity-70
overflow-scroll
pt-64
"
style="width: 600px"
@click="handleLayer1"
>
really long content ...
</div>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为了使我的解释更容易,我需要给每个Divs名称。让我们调用绝对位置的Div
TopDiv
,然后在downdivs
下面命名。您还将需要在
topdiv
本身上进行点击处理程序。该处理程序是我们将用来将事件“转发”到downdivs
的方法。在您的
topdiv
单击“处理程序”中,您会执行类似的操作:您可以阅读本文以了解有关事件派遣
To make my explanation easier I'll need to give each of the divs names. Let's call the absolutely positioned div
topDiv
, and the divs underneathdownDivs
.You're also going to need a click handler on
topDiv
itself. That handler is what we will use to "forward" the event to thedownDivs
.In your
topDiv
click handler, you'd do something like this:You can read this article to learn more about event dispatching