简易的js原生放大镜代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
    #obj{ float: left; width: 200px; height: 200px; position:relative; }

    #obj img{ width: 200px; height: 200px; display: block; }

    #darg{ width: 100px; height: 100px; background: yellow; position: absolute; left: 0px; top: 0px; opacity: 0.4;
        cursor: move; display: none;}

    #rightShow{ float: left; width: 400px; height: 400px; overflow: hidden; display: none; }

    #rightShow img{ width: 800px; height: 800px; }
    </style>
    <script type="text/javascript">
        window.οnlοad=function(){
            var obj = document.getElementById('obj');
            var leftImg = document.getElementById('leftImg');
            var darg = document.getElementById('darg');
            var rightShow = document.getElementById('rightShow');
            var rightImg = document.getElementById('rightImg');

            obj.οnmοusemοve=function(e){    //当鼠标在obj上面移动的事件

                var e = e || window.event;  //获取时间对象 并且做兼容处理

                darg.style.display='block';  //模拟放大镜的图标显示
                rightShow.style.display='block';  //放大镜的区域显示

                var lefts = e.clientX - obj.offsetLeft - darg.offsetWidth/2;  
                //移动时鼠标距离浏览器左侧距离   减去  obj距离浏览器的左侧距离  减去  放大镜图标实际宽度(包括边线等)的一半
                //就是obj内部放大镜图标距离obj内边的左侧距离
                var tops = e.clientY - obj.offsetTop - darg.offsetHeight/2;
                //移动时鼠标距离浏览器顶部距离   减去  obj距离浏览器的顶部距离  减去  放大镜图标实际高度的一半
                //就是obj内部放大镜图标距离obj内边的顶部距离
                var maxmoveX = obj.clientWidth - darg.offsetWidth;
                //移动时 obj的可视宽度(不包括边线滚动条等) 减去  darg放大镜图标的实际宽度
                //就是obj内部减去放大镜剩余的宽度 也就是可以左右移动的距离
                var maxmoveY = obj.clientHeight - darg.offsetHeight;
                //移动时 obj的可视高度 减去 darg放大镜图标的实际高度度
                //移动obj内部减去放大镜剩余的高度 也就是可以上下移动的距离

                if(lefts > maxmoveX){ //如果移动的距离超过可以左右移动的距离就把可以移动的距离赋值 防止放大镜溢出obj右侧
                    lefts = maxmoveX;
                }

                if(tops > maxmoveY){  //如果移动的距离超过可以上下移动的距离就把可以移动的距离赋值 防止放大镜溢出obj下方
                    tops = maxmoveY;
                }

                if(lefts < 0){  //如果移动的左距离小于0了 就把0赋给移动的距离 防止放大镜溢出obj 左侧
                    lefts = 0;
                }

                if(tops < 0){  //如果移动的上距离小于0了 就把0赋值给移动的距离 防止放大镜溢出obj 上侧
                    tops = 0;
                }

                darg.style.left = lefts + 'px';  //把鼠标移动的左右距离赋值给放大镜 让放大镜跟着移动
                darg.style.top = tops + 'px';   //把鼠标移动的上下距离赋值给放大镜 让放大镜跟着移动

                var num = rightImg.offsetWidth/leftImg.offsetWidth;
                //大的图片 除以小的图片 得到要放大的倍数
                rightShow.scrollLeft = darg.offsetLeft * num;  
                //把放大镜距离左侧的距离乘以倍数然后赋值给包含大图片的那个元素(对象)
                //那么这个元素内部就应该有距离左侧的scrollLeft值但是因为溢出隐藏了 所以滚动条不显示 就隐藏了
                rightShow.scrollTop = darg.offsetTop * num;
                //把放大镜距离上侧的距离乘以倍数然后赋值给包含大图片的那个元素(对象)
                //那么这个元素内部就应该有距离左侧的scrollTop值但是因为溢出隐藏了 所以滚动条不显示 就隐藏了
            }

            obj.οnmοuseοut=function(){

                darg.style.display='none';
                rightShow.style.display='none';
                //鼠标溢出obj时隐藏
            }

        };
    </script>
</head>
<body>
    <div id="obj">
        <img id="leftImg" src="images/tablist01.jpg" title=" " />
        <div id="darg"></div>
    </div>

    <div id="rightShow" class="all"><img id="rightImg" src="images/tablist01.jpg" title=" " /></div>
</body>
</html>

转载于:https://www.cnblogs.com/qibingshen/p/5293035.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值