html中的放大镜案例
首先准备两张图片small.jpg和big.jpg放在images文件夹下 文件夹和html页面放在同级目录


style代码
<style> img { display: block; } * { margin: 0; padding: 0; } .box { width: 350px; height: 350px; margin: 100px; border: 1px solid #ccc; position: relative; } .big { width: 400px; height: 400px; position: absolute; top: 0; left: 360px; overflow: hidden; display: none; } .big img { position: absolute; } .mask { width: 175px; height: 175px; background: rgba(255, 255, 0, 0.4); position: absolute; top: 0px; left: 0px; cursor: move; display: none; } .small { position: relative; } </style>
盒子代码
<div class="box" id="box">
<div class="small" id="small" >
<img src="images/small.jpg" width="350" alt="" />
<div class="mask" id="mask"></div>
</div>
<div class="big" id="big" >
<img src="images/big.jpg" width="800" alt="" id="img" />
</div>
</div>
script代码
<script>
//获取元素
var box = document.getElementById('box');
var small = document.getElementById('small');
var mask = document.getElementById('mask');
var big = document.getElementById('big');
var img = document.getElementById('img');
small.onmouseover=function () {
mask.style.display='block';
big.style.display='block';
}
small.onmouseout=function () {
mask.style.display='block';
big.style.display='block';
}
small.onmousemove=function (e) {
var x=e.clientX;
var y=e.clientY;
var offleft=box.offsetLeft;
var offtop=box.offsetTop;
var targetx=x-offleft;
var targety=y-offtop;
targetx=targetx-mask.offsetWidth/2;
targety=targety-mask.offsetHeight/2;
var maxX=small.offsetWidth-mask.offsetWidth;
var maxY=small.offsetHeight-mask.offsetHeight;
targetx=targetx<0?0:targetx;
targety=targety<0?0:targety;
targetx=targetx>maxX?maxX:targetx;
targety=targety>maxY?maxY:targety;
mask.style.left=targetx +'px';
mask.style.top=targety+'px';
var imagemaxx=img.offsetWidth-big.offsetWidth;
var imagemaxy=img.offsetWidth-big.offsetHeight;
var imgx=targetx/maxX *imagemaxx;
var imgy=targety/maxY*imagemaxy;
img.style.left= -imgx +'px';
img.style.top=-imgy+'px';
}
</script>

浙公网安备 33010602011771号