html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
#left{
width: 500px;
height: 500px;
border:1px solid black;
position: relative;
left: 50px;
}
#left span{
width: 250px;
height: 250px;
position: absolute;
left: 0;
top:0;
background-color: rgba(6,6,6,.6);
display: none;
}
#right{
position: absolute;
left: 600px;
top:0px;
width: 500px;
height: 500px;
overflow: hidden;
display: none;
background-color: red;
}
#right img{
position: absolute;
left: 0;
top:0;
width: 200%;
height: 200%;
}
</style>
</head>
<body>
<div id="left">
<img src="./12.jpg">
<span></span>
</div>
<div id="right">
<img src="./12.jpg">
</div>
<script>
var divLeft = document.getElementById("left")
var divRight = document.getElementById("right")
var span = document.querySelector("#left span")
var bigImage = document.querySelector("#right img")
divLeft.onmouseover = function(){
span.style.display="block"
divRight.style.display="block"
}
divLeft.onmouseout = function(){
span.style.display="none"
divRight.style.display="none"
}
divLeft.onmousemove = function(e){
var spanLeft = e.clientX -divLeft.offsetLeft - span.offsetWidth/2
var spanTop = e.clientY -divLeft.offsetTop - span.offsetHeight/2
if(spanLeft < 0){
spanLeft = 0
}
if(spanTop < 0){
spanTop = 0
}
if(spanTop>250){
spanTop = 250
}
if(spanLeft>250){
spanLeft = 250
}
span.style.left = spanLeft + 'px';
span.style.top = spanTop + 'px';
let imageLeft = spanLeft * (bigImage.width - 500) / (500 - 250);
let imageTop = spanTop * (bigImage.height - 500) / (500 - 250);
bigImage.style.left = -imageLeft + 'px';
bigImage.style.top = -imageTop + 'px';
}
</script>
</body>
</html>
自己找一个500*500的图片即可,一张即可