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

html中的放大镜案例

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" >
        <div class="small"  >
            <img src="images/small.jpg" width="350" alt="" />
            <div class="mask" ></div>
        </div>
        <div class="big"  >
            <img src="images/big.jpg" width="800" alt=""  />
        </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>

 

相关文章:

  • 2021-12-03
  • 2022-12-23
  • 2021-11-17
  • 2022-01-29
  • 2021-08-20
猜你喜欢
  • 2021-04-04
  • 2021-06-26
  • 2022-01-08
  • 2021-04-01
  • 2021-12-08
  • 2022-02-12
  • 2021-12-24
相关资源
相似解决方案