js magnifying glass 04

   <!DOCTYPE html>
<html lang="en">
<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>Document</title>
    <style>
      .box{
          width: 400px;
          height: 400px;
          border: 2px solid #ccc;
          position: absolute;
          left: 0;
          top: 0;
         
      }
      .box img{
          width: 400px;
          height: 400px;
      }
     .nas{
        width: 200px;
        height: 200px;
        border: 2px solid #ccc;
        position: absolute;
        left: 0;
        top: 0;
     }
    .work{
        width: 400px;
        height: 400px;
        border: 2px solid #000;
        position: absolute;
        overflow: hidden;
        left: 500px;
        top: 0;
    }
    .work img{
        width: 800px;
        height: 800px;
        position: absolute;
        left: 0;
        top: 0;
    }
    
    
    </style>
</head>
<body>
    <div class="box">
        <img src="img/2.jpg" >
        <div class="nas">

        </div>
    </div>
   <div class="work">
    <img src="img/2.jpg" >
   </div>
</body>
<script>
// 获取元素
var nas=document.querySelector(".nas");
var box=document.querySelector(".box");
var work=document.querySelector(".work");
var img=document.querySelector( ".work img")
//    绑定点击事件
nas.onmousedown=function(even){
    var even=even||window.event;
    var oLeft=even.offsetX;
    var oTop=even.offsetY;
    var r=(box.clientHeight-nas.clientHeight)/(500-img.clientLeft-work.clientLeft);
    console.log(r);
  document.onmousemove=function(eve){
    var e=eve||window.event;
    var x =e.clientX-oLeft ;
    var y=e.clientY-oTop
    // 判断是否到边界
    // 左右判定
    if(x<=0){
        x=0;
    }else if(x>box.clientWidth-nas.clientWidth){
        x=box.clientWidth-nas.clientWidth;
    }
    // 上下判定
    if(y<=0){
        y=0;
    }else if(y>box.clientHeight-nas.clientHeight){
        y=box.clientHeight-nas.clientHeight;

    }
      nas.style.left=x+"px";
      nas.style.top=y+"px";
     img.style.left=-(x/r)+"px";
     img.style.top=-(y/r)+"px";
  }
}
// 鼠标抬起的时候清
nas.onmouseup=function(){
 document.onmousemove=null;
}

</script>
</html>

Effect picture

Insert picture description here

Guess you like

Origin blog.csdn.net/qq_45555960/article/details/102514289