首页 > 其他 > 详细

放大镜效果

时间:2020-01-01 21:16:09      阅读:161      评论:0      收藏:0      [点我收藏+]
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>放大镜效果</title>
    <style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
        #main{
            position: relative;
            margin: 100px auto;
            width: 1196px;
            height: 496px;
            border: 2px solid #ccc;
        }
        #small{
            position: absolute;
            width: 200px;
            height: 200px;
            top: 150px;
            background-color: palegoldenrod;
        }
        #small img{
            width: 200px;
            height: 200px;
        }
        #big{
            position: absolute;
            width: 400px;
            top: 50px;
            left: 220px;
            height: 400px;
            display: none;
            overflow: hidden;
        }
        #big img{
            width: 700px;
            height: 700px;
            position: absolute;
        }
        #lucency{
            position: absolute;
            width: 100px;
            top: 0px;
            height: 100px;
            background-color: yellow;
            opacity: 0.5;
            display: none;
        }
    </style>
</head>
<body>
    <div id="main">
        <div id="small">
            <img src="img/shuju.jpg" />
            <div id="lucency">
                
            </div>
        </div>
        <div id="big">
            <img src="img/shuju.jpg" class="bigImg" />
        </div>
    </div>
    <script>
        var small=document.getElementById(small);   //小盒子
        var luncency=document.getElementById(lucency);    //黄色盒子
        var big=document.getElementById(big);
        var main=document.getElementById(main)
        var bigImg=document.querySelector(.bigImg)
        small.addEventListener(mouseover,function(){//鼠标放入预览图小盒子,大图和黄色显示
            big.style.display=block;
            luncency.style.display=block    
        })
        small.addEventListener(mouseout,function(){//鼠标离开预览图小盒子,大图和黄色隐藏
            big.style.display=none;
            luncency.style.display=none
        })
        small.addEventListener(mousemove,function(e){
            var smallLeft=e.pageX-main.offsetLeft    //鼠标距离small左边的距离
            var smallTop=e.pageY-main.offsetTop-small.offsetTop    //鼠标距离small上边的距离
            var smllle=smallLeft-luncency.offsetWidth/2
            var smllto=smallTop-luncency.offsetHeight/2
            var smllMax=small.offsetWidth-luncency.offsetWidth   //遮挡层的最大移动距离
            if(smllle<=0 ){
                smllle=0
            }else if(smllle>=smllMax){   //遮挡层的最大移动距离不能超出
                smllle=100
            }
            if(smllto<=0){
                smllto=0
            }else if(smllto>=smllMax){
                smllto=100
            }
                luncency.style.left=smllle+px        //黄块跟着光标坐标走,黄块的左坐标
                luncency.style.top=smllto+px        //黄块跟着光标坐标走,黄块的纵坐标
//                
                var bigMax=big.offsetWidth-bigImg.offsetWidth  //大图片的最大移动 距离
//                大图片的移动距离=遮挡层移动距离*大图片最大移动距离/遮挡层的最大移动距离
                //大图片移动距离的x
                var bigX=smllle*bigMax/smllMax;        
                //大图片移动距离的Y
                var bigY=smllto*bigMax/smllMax;    
                bigImg.style.left=bigX+px
                bigImg.style.top=bigY+px
        })
    </script>
</body>
</html>

放大镜效果

原文:https://www.cnblogs.com/yueranran/p/12129859.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!