技术文摘
uniapp/vue里父元素设置pointer-events: none时子元素点击事件怎样生效
uniapp/vue里父元素设置pointer-events: none时子元素点击事件怎样生效
在uniapp或vue开发中,有时我们会遇到这样的需求:给父元素设置了 pointer-events: none 来禁止父元素的鼠标交互,但又希望子元素的点击事件能够正常生效。这在一些特定的交互场景中非常有用,比如当父元素作为一个容器,仅用于布局和样式展示,而不希望其干扰子元素的点击操作。
当给父元素设置 pointer-events: none 后,根据CSS的特性,子元素会继承该属性,导致子元素的点击事件也无法触发。要解决这个问题,有几种可行的方法。
一种常见的方法是在子元素上重新设置 pointer-events: auto。这样就可以覆盖父元素的 pointer-events: none 属性,使子元素能够正常响应点击事件。例如,在vue的模板中:
<template>
<div class="parent" @click="parentClick" style="pointer-events: none;">
<div class="child" @click="childClick" style="pointer-events: auto;">点击我</div>
</div>
</template>
<script>
export default {
methods: {
parentClick() {
console.log('父元素点击');
},
childClick() {
console.log('子元素点击');
}
}
};
</script>
另一种方法是使用JavaScript来动态控制 pointer-events 属性。可以在需要的时候,通过操作DOM元素的 style 属性来改变子元素的 pointer-events 值。
还可以考虑调整HTML结构,将子元素移出具有 pointer-events: none 属性的父元素之外,通过合理的布局和定位来实现相同的视觉效果,同时保证子元素的点击事件不受影响。
在实际开发中,我们需要根据具体的场景和需求来选择合适的解决方案。如果只是简单的单个子元素需要恢复点击事件,直接在子元素上设置 pointer-events: auto 可能是最方便的方法。而如果涉及到多个子元素或者需要动态控制,使用JavaScript来操作可能更为灵活。通过合理的运用CSS和JavaScript,我们可以在父元素设置 pointer-events: none 的情况下,让子元素的点击事件正常生效,实现丰富多样的交互效果。
TAGS: UniApp Vue 子元素点击事件 pointer-events
- 2023 年低代码开发平台市场规模预计增长 25%达 100 亿美元
- 携程机票跨端 Kotlin DSL 数据库框架之 SQLlin
- SOA 与微服务的区别何在?
- 15 种适用于 Web 开发的优秀编程语言
- ReentrantReadWriteLock 读写锁实现原理图解
- 新到技术总监对 MQ 高可用架构的讲解极为透彻
- LoongArch 架构之内存模型及相关指令(二)
- 一次线上服务内存泄露排查记实
- Beautiful Soup4 详细解析,你掌握了吗?
- 共话服务模块化
- 处理 Wm_Killfocus 消息的注意事项
- 七个 Python 问题 扫盲进行时
- 手写的 60+工程 RPC 框架成功与 SpringCloud Alibaba 整合
- 高可用架构分析:一篇文章全知晓
- ECMAScript 2022 的新特性