鼠标事件穿透遮盖物

本文探讨了HTML/CSS中鼠标事件穿透现象,通过实例展示了pointer-events属性如何影响元素的点击行为,重点讲解了'auto'和'none'模式下的事件交互,并揭示了在遮罩元素中的事件处理策略。

一、鼠标事件穿透遮盖物

正常来说当有点击事件的元素被遮盖时,点击事件是不生效的,如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>鼠标事件穿透遮盖物</title>
</head>
<body>
    <style>
        .wrap {
            position: relative;
            width: 300px;
            height: 300px;
            display: flex;
            border: 1px solid #666;
        }
        .center {
            margin: auto;
            width: 200px;
            height: 200px;
            background-color: greenyellow;
            border: 1px solid #666;
            cursor: pointer;
        }
        .decoration {
            width: 300px;
            height: 300px;
            position: absolute;
            left: 0;
            top: 0;
            background: rgba(154,205,50, 0.3);
            //pointer-events: none;
        }
        .other-box {
            width: 30px;
            height: 30px;
            position: absolute;
            left: 5px;
            top: 5px;
            background-color: red;
            cursor: pointer;
            //pointer-events: auto;
        }
    </style>
    <div class="wrap">
        <div class="center" onclick="clickCenter()"></div>
        <div class="decoration">
            <div class="other-box" onclick="clickRed()"></div>
        </div>
    </div>
    <script>
        function clickCenter() {
            alert('点击到中间方块了')
        }
        function clickRed() {
            alert('点击到红色方块了')
        }
    </script>
</body>
</html>

此时,clickRed点击事件是生效的,但是clickCenter事件因为元素被遮盖是不生效的
当把在class decoration 样式上的 pointer-events: none注释打开,clickCenter事件现在是生效的
但是clickRed点击事件是不生效的,此时再把class other-box 样式上的 pointer-events: auto注释
打开,clickRed和clickCenter点击事件都是生效的

二、pointer-events属性介绍

auto: 与pointer-events 未指定时效果相同
none:阻止元素成为鼠标事件目标

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值