认识Pointer-events 透视事件

文章讲述了如何在层级很高的遮罩层下,由于兄弟级关系导致点击事件无法触发的问题。通过引入CSSpointer-events属性,可以控制元素对鼠标事件的响应,将遮罩层的pointer-events设置为none,使得按钮的点击事件得以正常工作,常见于canvas、图片等场景中。
摘要由CSDN通过智能技术生成

现在我司有一个需求

现在有一个层级很高的遮罩层和一个按钮它们兄弟级关系 遮罩层脱离了文档流 按钮有一个点击事件 现在需要点击按钮触发按钮的点击事件

<template>
  <div>
    <div class="one"></div>
    <div class="two" @click="affair"></div>
  </div>
</template>

<script setup lang="ts">
let affair =()=>{
  console.log('点击');
}
</script>

<style>
.one{
  width: 100%;
  height: 80px;
  background: #a8a8a8;
  opacity: 0.8;
  position: absolute;
  z-index: 999;

}
.two{
  width: 100%;
  height: 40px;
  background: green;
}
</style>

此时我们会发现点击绿色盒子是无法触发点击事件的,肯定还有人会想到用事件冒泡但是他们不是父子级关系这个方法就无法实现了。比如这种场景:有一个canvas的涂鸦区域,用户可以在canvas上随便涂写啥,在该区域的特定位置会加一些点击事件,比如切换大小颜色啥的,此时就可以在该区域下加上按钮,把不同事件添加到不同按钮上。

此时我们就需要一个全新的Css属性pointer-events,它定义了在何种情况下元素可以成为鼠标事件(或触摸事件)的目标。这个属性可以控制元素是否可以被点击、是否可以触发鼠标事件,或者是否应该忽略鼠标事件,让事件传递给下面的元素。

pointer-events 是一个可继承属性,按照 CSS 的层叠与继承规则,子元素未设置 pointer-events 时将会继承父值。

我们只需要在最顶级的元素加上  pointer-events: none;即可

.one{

  z-index: 999;

  pointer-events: none;

}

 

这个需求还是挺常见的 可以用到canvas、图片、遮罩层、水印等等

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值