<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>放大镜</title>
</head>
<style type="text/css">
*{
margin:0;
padding: 0;
list-style: none;
}
.middle{
width: 1300px;
margin:100px auto;
}
.left{
width: 580px;
height: 340px;
border:1px solid #ccc;
position: relative;
float: left;
}
.left img{
width: 600px;
height: 400px;
}
.left .small{
width: 200px;
height: 200px;
border:1px solid #ccc;
position: absolute;
top:0;
left: 0;
background: pink;
opacity: 0.3;
display:none;
}
.right{
width: 700px;
height: 600px;
border:1px solid #ccc;
position: relative;
float: right;
overflow: hidden;
}
.right img{
position: absolute;
width: 800px;
}
</style>
<body>
<div class="middle">
<div class="left" id="zb">
<img src="22.jpg" alt="" />
<div class="small" id="xh"></div>
</div>
<div class="right" id="yb">
<img src="22.jpg" alt="" / id="yt">
</div>
</div>
</body>
<script type="text/javascript">
zb.onmouseover=function(){
xh.style.display="block"
//当鼠标移到盒子上面。小盒子block
yb.style.display="block"
} //右边的大盒子block
zb.onmouseout=function(){
xh.style.display="none";
//当鼠标移到盒子外面。小盒子为none
yb.style.display="none"
//当鼠标移到盒子外面。大盒子为none
}
xh.onmousemove=function(e){
var e=e||event;
var x=e.clientX-zb.offsetLeft-xh.offsetWidth/2;
//鼠标的位置等于鼠标的最大宽-大盒子左边距离-小盒子的宽/2
var y=e.clientY-zb.offsetTop-xh.offsetHeight/2;
//鼠标的位置等于鼠标的最大高-大盒子上边距离-小盒子的高/2
if(x<0){
x=0
}if(y<0){
y=0
}if(x>zb.offsetWidth-xh.offsetWidth){
//大盒子的最大宽-小盒子的可见宽就是xh能移动的最大位置
x=zb.offsetWidth-xh.offsetWidth
}if(y>zb.offsetHeight-xh.offsetHeight){
y=zb.offsetHeight-xh.offsetHeight
//大盒子的高度-小盒子的高度就是xh能移动的最大位置
}
xh.style.left=x+"px";
xh.style.top=y+"px";
yt.style.left=-x*1+"px";
yt.style.top=-y*1+"px";
}
</script>
</html>