pointer-events: none; 指示该元素不是鼠标事件的目标,值none表示鼠标事件“穿透”该元素并且指定该元素“下面”的任何东西。说白了,就是让目标标签不接受鼠标事件(含click,mousemove,mouseup之类的)。我们来举个例子:
<style>
.parent {
width: 400px;
height: 400px;
padding: 50px;
margin: 100px;
background: #f20;
}
.child {
width: 200px;
height: 200px;
padding: 50px;
background: #ff0;
}
.child-child {
width: 50px;
height: 50px;
background: #00d;
}
</style>
<div class="parent" id="parent">
<div class="child">
<div class="child-child">
</div>
</div>
</div>
<script>
let parent = document.getElementById("parent");
parent.addEventListener("click", function(event) {
console.info(event.offsetX);
});
</script>
可以看到,我们事件是添加在 parent上的。但是点击鼠标到b或c上的时候相对的坐标变成了b或c,怎么办呢,一种解决办法是clientX,代码变成这样
<style>
.parent {
width: 400px;
height: 400px;
padding: 50px;
margin: 100px;
background: #f20;
}
.child {
width: 200px;
height: 200px;
padding: 50px;
background: #ff0;
}
.child-child {
width: 50px;
height: 50px;
background: #00d;
}
</style>
<div class="parent" id="parent">
<div class="child">
<div class="child-child">
</div>
</div>
</div>
<script>
let parent = document.getElementById("parent");
parent.addEventListener("click", function(event) {
console.info(event.clientX);
});
</script>
但是,如果不用clientX怎么解决这个问题呢?
pointer-events: none; 可以解决这个问题
如果我们就是不让child和child-child接受鼠标点击事件,那给它们的样式添加 pointer-events,代码修改后为:
<style>
.parent{
width:400px;
height:400px;
padding: 50px;
margin:100px;
background:#f20;
}
.child{
width:200px;
height:200px;
padding:50px;
background:#ff0;
pointer-events: none; /* 不接受鼠标事件 */
}
.child-child{
width:50px;
height:50px;
background:#00d;
pointer-events: none; /* 不接受鼠标事件 */
}
</style>
<div class="parent" id="parent">
<div class="child">
<div class="child-child">
</div>
</div>
</div>
<script>
let parent = document.getElementById("parent");
parent.addEventListener("click", function(event) {
console.info(event.offsetX);
});
</script>
网友回复
python如何实现torrent的服务端进行文件分发p2p下载?
如何在浏览器中录制摄像头和麦克风数据为mp4视频保存下载本地?
go如何编写一个类似docker的linux的虚拟容器?
python如何写一个bittorrent的种子下载客户端?
ai能通过看一个网页的交互过程视频自主模仿复制网页编写代码吗?
ai先写功能代码通过chrome mcp来进行测试功能最后ai美化页面这个流程能行吗?
vue在手机端上下拖拽元素的时候如何禁止父元素及body的滚动导致无法拖拽完成?
使用tailwindcss如何去掉响应式自适应?
有没有直接在浏览器中运行的离线linux系统?
nginx如何保留post或get数据进行url重定向?