使用纯 CSS 控制事件捕获,使得被覆盖的元素能够响应点击事件
·
Yin灏
我们在编写页面的时候,有的元素会有遮罩层,这个遮罩会影响后面元素的点击事件,造成这部分区域不可用,我们可以通过纯 CSS 来改变这种行为。
pointer-events
要让遮罩元素不影响它下面元素的事件响应,我们可以给它设置 pointer-events 属性:
.overlay {
pointer-events: none;
}
pointer-events 有两个值:
- auto,默认值,会响应鼠标点击事件
- none,不响应鼠标事件,由下层元素响应。
这里要让遮罩元素不影响它后面元素的事件响应,就把 pointer-events 设置为 none 就可以了。
示例
我们来看一个具体的示例。假设我们这里展示一张图片,图片下半部分有一个遮罩层,显示图片描述:
图片使用了超链接 a 标签进行包裹,点击后能跳转到某个网站:
<div class="imageContainer">
<a href="https://www.zxuqian.cn">
<img src="./2021-12-20-19-52-11.png" alt="" />
</a>
<div class="overlay">这是一段描述文案</div>
</div>
在没有任何特殊配置的情况下,如果点击遮罩层,那么不会有任何反应,如果我们把遮罩层元素的 pointer-events 属性设置为 none:
.overlay {
pointer-events: none;
}
我们再看一下运行效果,点击一下遮罩层,可以看到触发了超链接的跳转,这样遮罩层就不影响它下边元素的事件响应了。