CSS操纵元素的禁用和启用

通常表单控件都会有属性readonly、disabled对元素进行只读、禁用等操作。

而有时候我们想要div也达到类似效果,可以用CSS样式pointer-events: none进行控制。

科普知识

CSS样式的pointer-events: none用于控制一个元素能否响应鼠标操作。当该属性设置为none时,当前元素及其子元素将无法与鼠标或触摸设备产生交互作用。鼠标点击、滑过、甚至移动都不会触发事件。

css 复制代码
.disable{
	pointer-events : none;
}

具体来说,pointer-events: none;的效果如下:

  1. 忽略鼠标操作:对一个元素设置pointer-events: none;,能让浏览器在处理鼠标操作时,忽视掉这个元素的存在,直接穿透到点击区域背后的元素上。
  2. 不会触发事件:意味着直接在这个元素上做鼠标操作时,该元素上的鼠标效果不会被处理,例如hover效果;该元素上的鼠标事件不会被响应,例如click、mousein、mousedown事件。

此外还有以下常见使用场景:

  1. 实现视差滚动效果:使滚动层无法响应交互,实现粘性效果。
  2. 实现遮罩层:可以使下层元素无法响应事件,产生遮蔽遮罩的效果。
  3. 修复点击穿透问题:在元素的子元素上设置,防止点击事件穿透到父层元素上。
  4. 改变鼠标事件的触发对象:可以在一个元素上设置pointer-events: none;,然后在它的子元素上绑定事件,这样鼠标交互会直接在子元素上触发事件,跳过中间元素。

JQuert版本设置样式控制

css 复制代码
$('div[name=××××]').css("pointer-events","none"); // 设置div禁用
$('div[name=××××]').css("pointer-events","");     // 恢复div使用

代码示例

cpp 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>DIV模拟禁用</title>
		<style>
			div{
				width: 200px;
				height: 200px;
				background: pink;
			}
			.disable{
				pointer-events : none;
			}
		</style>
	</head>
	<body>
		<div class="disable" onclick="show()">
		</div>
		<script>
			function show(){
				alert("我被点击啦!");
			}
		</script>
	</body>
</html>

效果展示

div盒子未加入 pointer-events : none;可以弹框显示

div盒子加上类样式disable就无法弹框显示!

相关推荐
~无忧花开~12 小时前
CSS学习笔记(五):CSS媒体查询入门指南
开发语言·前端·css·学习·媒体
程序猿小D13 小时前
【完整源码+数据集+部署教程】【零售和消费品&存货】价格标签检测系统源码&数据集全套:改进yolo11-RFAConv
前端·yolo·计算机视觉·目标跟踪·数据集·yolo11·价格标签检测系统源码
吴鹰飞侠13 小时前
AJAX的学习
前端·学习·ajax
JNU freshman13 小时前
vue 技巧与易错
前端·javascript·vue.js
落一落,掉一掉13 小时前
第十二周 waf绕过和前端加密绕过
前端
Asort13 小时前
JavaScript设计模式(十六)——迭代器模式:优雅遍历数据的艺术
前端·javascript·设计模式
Coffeeee13 小时前
Labubu很难买?那是因为还没有用Compose来画一个
前端·kotlin·android jetpack
我是日安13 小时前
从零到一打造 Vue3 响应式系统 Day 28 - shallowRef、shallowReactive
前端·javascript·vue.js
开源之眼13 小时前
深入理解 JavaScript 报错:TypeError: undefined is not a function
前端·javascript
LRH13 小时前
时间切片 + 双工作循环 + 优先级模型:React 的并发任务管理策略
前端·react.js