支持事件穿透?使用pointer-events样式

简介:

使用绝对定位元素,让元素A完全盖住元素B时,如何通过元素A来响应元素B的事件呢?

  上图可以用下面的SVG代码来实现:

<svg width="200" height="180">
    <rect x="50" y="50" width="50" height="50" fill="#f34b5b" onclick="alert('Clicked')"></rect>
    <rect x="20" y="20" width="160" height="140" fill="#FEDDCE" opacity="0.8"></rect>
</svg>

  第一个rect被第二个rect完全盖住,因此无法响应onclick事件。在传统解决办法中,我们需要编写JavaScript代码来实现事件穿透,即首先响应第二个rect元素的onclick事件,通过坐标值来判断点击位置是否位于第一个rect元素的范围内,从而决定是否触发第一个rect元素的onclick事件。但是如果图形和图形之间的关系比较复杂的话,自己编写代码工作量会很大,而且代码执行效率也不高。好在我们可以通过一个CSS样式来解决该问题:

pointer-events: none;

  将该样式加到第二个rect元素上,可以很轻松地实现事件穿透效果。该样式可以应用到任何DOM节点上,所有绝对定位的元素都适用,所有现代主流浏览器都已经支持该样式(经测试IE11也已经支持)。


本文转自Jaxu博客园博客,原文链接:http://www.cnblogs.com/jaxu/p/4196295.html,如需转载请自行联系原作者

相关文章
|
存储 关系型数据库 MySQL
【分布式和微服务1】一篇文章详细了解分布式和微服务的基本概念
【分布式和微服务1】一篇文章详细了解分布式和微服务的基本概念
1628 0
|
Cloud Native 中间件 Java
Go语言学习路线 - 8.高级篇:从五个问题来畅想Go工程师的未来发展
有人常说,编程语言对软件工程师来说并不重要,更重要的是软件工程思想、架构设计能力等更高层面的内容。 这个观点本身没有问题,但它更多的是针对有相当工作经验的程序员。对于绝大多数的人,编程语言依然是最重要、最核心的技能,也是通往更高层面的敲门砖。所以,精通一门编程语言,不仅仅要熟悉其语法与原理,更要了解其周边的生态,包括框架、开源库、中间件等,以及掌握它适用的业务场景。
256 0
|
人工智能 自然语言处理 测试技术
什么是通义灵码?
什么是通义灵码?
1754 0
详解Vue3——#default=“scope”
详解Vue3——#default=“scope”
1213 0
|
存储 前端开发 安全
Tauri 开发实践 — Tauri 原生能力
本文介绍了如何使用 Tauri 框架构建桌面应用,并详细解释了 Tauri 提供的原生能力,包括文件系统访问、系统托盘、本地消息通知等。文章通过一个具体的文件下载示例展示了如何配置 Tauri 来使用文件系统相关的原生能力,并提供了完整的代码实现。最后,文章还提供了 Github 源码链接,方便读者进一步学习和参考。
529 1
Tauri 开发实践 — Tauri 原生能力
|
监控 Unix Shell
Nightingale——夜莺监控系统部署邮件告警系统【三】
Nightingale——夜莺监控系统部署邮件告警系统【三】
206 1
Nightingale——夜莺监控系统部署邮件告警系统【三】
|
关系型数据库 MySQL Linux
一次虚拟机centos7系统崩溃恢复记录
一次虚拟机centos7系统崩溃恢复记录
850 0
|
存储 容器
内存越界访问(Out-of-Bounds Access)
【10月更文挑战第12天】
1327 2
|
机器学习/深度学习 供应链 搜索推荐
深度学习与日常生活的融合
本文旨在探索深度学习技术在日常生活中的应用,分析其对各行各业的影响以及未来发展趋势。通过具体案例,展示深度学习如何改变我们的生活方式和工作模式,为读者提供全面而深入的理解。