point-events:none

pointer-events: none; //如同disabled 属性,可以实现事件的完全禁用。如果其他标签需要类似的禁用效果,这个链接,你是点不了的,并且 hover 也没有效果。
(值得一提的是,仅仅是鼠标事件失效,用 tab 键还是可以选中该链接的然后 enter 打开,这个时候可以去掉 a 标签的 href 属性,就不能让 tab 键选中了)

案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>跟随鼠标移动(大图展示)</title>
    <style type="text/css">
        html, body {
            overflow: hidden;
        }

        body, div, ul, li {
            margin: 0;
            padding: 0;
        }

        #box ul {
            width: 768px;
            height: 172px;
            list-style-type: none;
            margin: 10px auto;
        }

        #box li {
            float: left;
            width: 170px;
            height: 170px;
            cursor: pointer;
            display: inline;
            border: 1px solid #ddd;
            margin: 0 10px;
        }

        #box li.active {
            border: 1px solid #a10000;
        }

        #box li img {
            width: 170px;
            height: 170px;
            vertical-align: top;
        }

        #big {
            position: absolute;
            width: 400px;
            height: 400px;
            border: 2px solid #ddd;
            display: none;
            pointer-events: none;
        }

        #big div {
            position: absolute;
            top: 0;
            left: 0;
            width: 400px;
            height: 400px;
            opacity: 0.5;
            filter: alpha(opacity=50);
            /*background: #fff url(img/loading.gif) 50% 50% no-repeat;*/
        }
    </style>
    <script src="jquery-1.12.4.js"></script>
    <script>
    $(function(){
    $('#box li').on('mouseenter',function () {
        // console.log($(this).find('img').attr('src'));
        $('#box li').on('mousemove',function (e) {
            // console.log(e.clientX,e.clientY);
            var w=$(window).width();
            var bigW=$('#big').width();
            if(w-e.clientX>bigW){
                $('#big').css({'left':e.clientX,'top':e.clientY})
            }else {
                $('#big').css({'left':e.clientX-bigW,'top':e.clientY})
            }
        })
        $('#big').css('display','block');
        $('#big div').empty().append('<img src="'+$(this).find('img').attr('src')+'" width="100%" height="100%">')
    })
    $('#box li').on('mouseleave',function () {
        $('#big').css('display','none');
    })
})
    </script>
</head>
<body>
<div id="box">
    <ul>
        <li><img src="http://www.fgm.cc/learn/lesson5/img/shirt_1.jpg"/></li>
        <li><img src="http://www.fgm.cc/learn/lesson5/img/shirt_2.jpg"/></li>
        <li><img src="http://www.fgm.cc/learn/lesson5/img/shirt_3.jpg"/></li>
        <li><img src="http://www.fgm.cc/learn/lesson5/img/shirt_4.jpg"/></li>
    </ul>
</div>
<div id="big">
    <div>
        <img src="http://www.fgm.cc/learn/lesson5/img/shirt_1.jpg" width="100%" height="100%">
    </div>
</div>
</body>
</html>

该案例中鼠标移动到box中li的图片时,对应的id为big的盒子显示并且跟着鼠标移动,在id为 big的盒子未添加pointer-events: none;big的盒子会不停闪动。出现原因当鼠标移动到box上时,id为 big的盒子出现在li的盒子上鼠标之下,使得鼠标针对li的移动事件受到影响。解决方式就是为id为big的盒子添加样式pointer-events: none;

出现场景2:在放大镜案例中,为box添加鼠标移动事件,给遮罩层设置left和top 使鼠标永远在遮罩层中间,而在获取鼠标的移动时的坐标时(使用jquery中offsetX,offsetY系列),鼠标位置不准确
解决方式:为遮罩层添加样式point-event:none

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值