<!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>放大镜</title> </head> <style> .box{ width: 300px; height: 300px; position: absolute; top: 0; left: 0; } .box img{ width: 100%; height: 100%; position: absolute; left: 0; top: 0; } .box1{ width: 100%; height: 100%; position: absolute; left: 0; top: 0; z-index: 99; } .hand{ width: 100px; height: 100px; background: rgba(0, 0, 100, 0.6); position: absolute; left: 0; top: 0; display: none; } .bigbox{ width: 300px; height: 300px; position: absolute; top: 0; left: 303px; overflow: hidden; } .bigbox img{ display: none; position: absolute; left: 0; top: 0; width: 900px; height: 900px; } </style> <body> <div class="box"> <img src="jujingyi.jpg" alt=""> <div class="box1"></div> <div class="hand"></div> </div> <div class="bigbox"> <img src="jujingyi.jpg" alt=""> </div> </body> </html> <script> let box=document.querySelector(".box"); let box1=document.querySelector(".box1"); let hand=document.querySelector(".hand"); let bigbox=document.querySelector(".bigbox img"); box.onmouseenter=function(){ //鼠标移入抓手(蓝色)和右边图片显示 hand.style.display="block"; bigbox.style.display="block"; box1.onmousemove=function(event){//事件移动 let x0=hand.offsetWidth/2; //鼠标距离抓手hand的边框距离中心 let y0=hand.offsetHeight/2; let x1=event.clientX; //鼠标距离页面左边的距离 let y1=event.clientY;//鼠标距离页面上面的距离 let left=x1-x0; //抓手盒子距离页面左边的距离 let top=y1-y0;//抓手盒子距离页面右边的距离 if(left<0){ //判断条件 使抓手盒子不离开放图片的盒子 left=0; } if(top<0){ top=0; } if(top>200){ top=200; } if(left>200){ left=200 } hand.style.left=left+"px"; //抓手盒子随鼠标移动的位置 hand.style.top=top+"px"; bigbox.style.left=-left*3+"px"; //右边图片放大三倍随鼠标移动实时变化 bigbox.style.top=-top*3+"px"; } } box.onmouseleave=function(){ //鼠标离开左边放图片的盒子 抓手和右边放大图片都消失 hand.style.display="none"; bigbox.style.display="none"; } </script>