当前位置: 首页 > article >正文

前端小知识 鼠标穿透 pointer-events: none;

为什么会说到这个呢?是我觉得没有识别出来,然后就导致了这样的问题,这种情况不应该发生。我写了如下这样一段代码,但是发现当自己选择时间的时候无法选择。然后就发现变成了光标在闪烁。这样其实就是因为我选择到了这个input框的鼠标事件,而没有触发u-picker的鼠标事件,所以导致了不能弹出时间选择器。

<template v-if="isTime(item.fieldType)">
				<u-picker mode="time" v-model="item.calendarShow" startYear="1922"
					:params="params(item.fieldTypeTime)"
					@confirm="confirm($event, index, item.fieldTypeTime)"></u-picker>
				<u-input class="date-holder" :placeholder="`请选择${item.fieldValue}`" v-model="detail[item.fieldKey]" type="text" disabled
					@click="item.calendarShow = true"></u-input>
			</template>

依靠这个解决了,其实就是很简单,就是取消与input的鼠标交互的事件,然后能直接去触发别的的鼠标事件

<style lang="scss" scoped>
	.form-fields {
		::v-deep {
			.date-holder input {
				pointer-events: none;
			}
		}
	}
</style>

总结知识:
一、鼠标穿透 : pointer-events: none;
pointer-events:none; 是 CSS3 中的一个属性,主要用于控制元素是否响应鼠标或触摸事件。当元素的 pointer-events 属性被设置为 none 时,该元素及其子元素将无法与鼠标或触摸设备产生交互作用,即无法触发事件。

二、使用场景
1、实现特殊效果
在一个元素上覆盖一个透明的层,同时禁用用户对下面元素的操作

2、实现视差滚动效果
通过使滚动层无法响应交互,实现粘性效果

3、实现遮罩层
使下层元素无法响应事件,产生遮蔽遮罩的效果

4、修复点击穿透问题
在一个元素的子元素上设置 pointer-events: none,可以防止点击事件穿透到父层元素上

5、改变鼠标事件的触发对象
可以在一个元素上设置 pointer-events: none,然后在它的子元素上绑定事件,这样鼠标交互会直接在子元素上触发事件,跳过中间元素


http://www.kler.cn/a/506965.html

相关文章:

  • 语音合成的预训练模型
  • 【docker踩坑记录】
  • 【gin】中间件使用之jwt身份认证和Cors跨域,go案例
  • 深入浅出 OpenResty
  • Open FPV VTX开源之默认MAVLink设置
  • MMDetection框架下的常见目标检测与分割模型综述与实践指南
  • Vue快速开发之环境搭建nodejs与运行第一个Vue项目
  • docker的数据卷与dockerfile自定义镜像
  • Golang—— error 和 panic
  • [私用学习笔记·突击面试]Collection和迭代器
  • 图论的起点——七桥问题
  • 软件测试入门—测试流程之需求分析
  • Pycharm报错:DeprecationWarning: sipPyTypeDict() is deprecated
  • react 与 vue 的比较,以及如何选择?
  • 使用 spring boot 2.5.6 版本时缺少 jvm 配置项
  • 持续集成 02|Jenkins介绍与安装、Postman集成Jenkins、代码集成Jenkins
  • 【网络协议】DHCP(动态主机配置协议)
  • 单片机的原理及其应用:从入门到进阶的全方位指南
  • iis强制重定向https
  • 出差人员携带的电脑文件信息安全如何保障?
  • 校园跑腿小程序---任务界面 发布以及后端模板下载
  • react中的hook
  • 浅谈云计算10 | 服务器虚拟化支撑技术(长文)
  • Spring Boot启动流程详解与技术探讨
  • UDP/TCP ①-UDP协议报文格式
  • 【网络篇】IP知识