解决因为z-index层级的原因导致无法触发下层鼠标事件

前言

最近在做一个拖动的组件,其中一个就是拖动tag到一个div折叠面板内会自动打开div折叠面板。虽然通过设置z-index可以很简单实现这个效果,但却遇到问题了。


接下来我就说一下实现的探索过程吧:

1:tag设置z-index为-1

虽然tag设置z-index为-1时可以很容易触发鼠标移动到div折叠面板上的onmouseover事件从而打开折叠面板,但如果页面高度较大,有滚动,这时拖动tag到滚动后出现的页面会被隐藏,这显然不是我们想要看到的。

2:不设置tag的层级

这时虽然在滚动页面部分可以显示tag组件,但却因为层级的原因导致无法触发折叠面板的onmouseover事件,也就无法实现基本功能了。


思路:

有上面两种方式总结得出,要实现功能必须走既不设置负数层级给tag组件,又要可以触发折叠面板的鼠标事件。


最终解决办法

好了,终于到了解决时刻,其实我们只需要给tag组件加上pointer-events:none就可以解决了。
注意:pointer-events:none虽然可以让鼠标事件无效,从而不影响层级下面的组件鼠标事件,但是,这不能使其键盘事件无效。


效果图(最近再弄个东西,不方便弄gif,先凑合下吧):


一开始的样子:

在这里插入图片描述

鼠标拖动tag组件到创建图那个折叠面板时自动打开:
在这里插入图片描述

结语

希望能帮到各位,在下告辞。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值