放大镜
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9437f0254e57ef125092956efb14ae9a.gif)
<style>
*{padding: 0;margin: 0;}
#box{
margin: 50px auto;
width: 800px;
height: 400px;
overflow: hidden;
border: 5px solid rgb(228, 151, 36);
position: relative;
}
#small{
width: 500px;height: 400px;
position: absolute;
}
#small img{
width: 100%;height: 100%;
display: block;
position: absolute;
left:0px;top:0px;
}
#small span.move{
width: 100px;height: 100px;
position: absolute;
top:0;left:0;
background-color: black;opacity: 0.3;
display: none;
}
#big{
width: 200px;height: 200px;
float: left;
position: absolute;
border: 2px solid rgb(199, 3, 3);
overflow: hidden;
display: none;
}
#big_img{
position: absolute;
left:0px;top:0px;
width:1000px;
height: 800px;
}
</style>
<body>
<div id="box">
<div id="small">
<img src="./images/3.jpg" />
<span class="move"></span>
</div>
<div id="big">
<img src="./images/3.jpg" id="big_img" />
</div>
</div>
</body>
<script>
var oSmall = document.getElementById("small");
var oMove = document.querySelector(".move");
var oBox = document.getElementById("box");
var oBig = document.getElementById("big");
var oBigImg = document.getElementById('big_img');
oSmall.onmousemove = function(event){
var e = event || window.event;
var mouseX = e.clientX;
var mouseY = e.clientY;
oMove.style.display = "block";
var moveLeft = mouseX-oBox.offsetLeft - oMove.offsetWidth/2;
var moveTop = mouseY -oBox.offsetTop - oMove.offsetHeight/2;
moveLeft < 0 ? moveLeft = 0 : moveLeft = moveLeft;
moveLeft > this.offsetWidth - oMove.offsetWidth ? moveLeft = this.offsetWidth - oMove.offsetWidth : moveLeft = moveLeft;
moveTop < 0 ? moveTop = 0 : moveTop = moveTop;
moveTop > this.offsetHeight - oMove.offsetHeight ? moveTop = this.offsetHeight - oMove.offsetHeight : moveTop = moveTop;
oMove.style.left=moveLeft+'px';
oMove.style.top=moveTop+'px';
oBig.style.top = this.offsetTop + 'px';
oBig.style.left = this.offsetLeft + this.offsetWidth + 'px';
oBig.style.display = 'block';
var oBig_x = moveLeft/(this.offsetWidth-oMove.offsetWidth)*(oBig.offsetWidth-oBigImg.offsetWidth);
var oBig_y = moveTop/(this.offsetHeight-oMove.offsetHeight)*(oBig.offsetHeight-oBigImg.offsetHeight);
oBigImg.style.top = oBig_y + 'px';
oBigImg.style.left = oBig_x + 'px';
}
oSmall.onmouseout = function(){
oMove.style.display = 'none';
oBig.style.display = 'none';
}
</script>