html中的放大镜案例

首先准备两张图片small.jpg和big.jpg放在images文件夹下 文件夹和html页面放在同级目录

style代码

  <style>
        img {
            display: block;
        }

        * {
            margin: 0;
            padding: 0;
        }

        .box {
            width: 350px;
            height: 350px;
            margin: 100px;
            border: 1px solid #ccc;
            position: relative;
        }

        .big {
            width: 400px;
            height: 400px;
            position: absolute;
            top: 0;
            left: 360px;
            overflow: hidden;
            display: none;
        }

        .big img {
            position: absolute;

        }

        .mask {
            width: 175px;
            height: 175px;
            background: rgba(255, 255, 0, 0.4);
            position: absolute;
            top: 0px;
            left: 0px;
            cursor: move;
            display: none;
        }

        .small {
            position: relative;
        }
    </style>

 

盒子代码

 <div class="box" id="box">
        <div class="small" id="small" >
            <img src="images/small.jpg" width="350" alt="" />
            <div class="mask" id="mask"></div>
        </div>
        <div class="big" id="big" >
            <img src="images/big.jpg" width="800" alt="" id="img" />
        </div>
    </div>

 

script代码

<script>
    
    
    //获取元素
    var box = document.getElementById('box');
    var small = document.getElementById('small');
    var mask = document.getElementById('mask');
    var big = document.getElementById('big');
    var img = document.getElementById('img');


    small.onmouseover=function () {
        mask.style.display='block';
        big.style.display='block';
    }
    small.onmouseout=function () {
        mask.style.display='block';
        big.style.display='block';
    }
   small.onmousemove=function (e) {
        var x=e.clientX;
        var y=e.clientY;
        var offleft=box.offsetLeft;
        var offtop=box.offsetTop;

        var targetx=x-offleft;
        var targety=y-offtop;

        targetx=targetx-mask.offsetWidth/2;
        targety=targety-mask.offsetHeight/2;


        var maxX=small.offsetWidth-mask.offsetWidth;
        var maxY=small.offsetHeight-mask.offsetHeight;

        targetx=targetx<0?0:targetx;
        targety=targety<0?0:targety;
        targetx=targetx>maxX?maxX:targetx;
        targety=targety>maxY?maxY:targety;

        mask.style.left=targetx +'px';
        mask.style.top=targety+'px';

        var imagemaxx=img.offsetWidth-big.offsetWidth;
        var imagemaxy=img.offsetWidth-big.offsetHeight;

        var imgx=targetx/maxX *imagemaxx;
        var imgy=targety/maxY*imagemaxy;

        img.style.left= -imgx +'px';
        img.style.top=-imgy+'px';
   }
</script>

 

posted @ 2019-11-15 15:34  handsomehe  阅读(1301)  评论(0编辑  收藏  举报