实现jquery放大镜的两种方法

2020-05-27 18:05:58易采站长站整理

var x = e.pageX,
y = e.pageY;

//设置遮罩层的位置
$('.shade').offset({
top: y-shadeHeight/2,
left: x-shadeWidth/2
});

//获取遮罩层相对父元素的位置
var cur = $('.shade').position(),
_top = cur.top,
_left = cur.left,
hdiffer = middleHeight - shadeHeight,
wdiffer = middleWidth - shadeWidth;

if (_top < 0) _top = 0;
else if (_top > hdiffer) _top = hdiffer;
if (_left < 0) _left = 0;
else if (_left > wdiffer) _left =wdiffer;

//判断完成后设置遮罩层的范围
$('.shade').css({
top: _top,
left: _left
});

//设置放大区图片移动
$('.big img').css({
top: - rateY*_top,
left: - rateX*_left
});

});;

//封装的改变图片显示的函数
function changePic (element,index) {
$(element).click(function() {
$('#container img').eq(index).css('display', 'block').siblings().css('display', 'none');
$('.big img').eq(index).css('display', 'block').siblings().css('display', 'none');
});
}

});

以上是常用的,下面这个是在原图基础上放大的

htm


<body>
<div id="father">
<div id="container">
<img src="img/400_1.jpg" style="display: block;">
<img src="img/400_2.jpg" >
<img src="img/400_3.jpg" >
<div class="shade">
<img src="img/800_1.jpg" style="display: block;">
<img src="img/800_2.jpg">
<img src="img/800_3.jpg">
</div>
</div>
<div class="small first"><img src="img/50_1.jpg"></div>
<div class="small second"><img src="img/50_2.jpg"></div>
<div class="small third"><img src="img/50_3.jpg"></div>
</div>
</body>

css代码


*{padding: 0; margin: 0;}
#father .small{width: 50px; height: 50px; border: 2px solid #ccc; bottom: 0; position: absolute;}
#father .second{left: 70px;}
.third{left: 140px;}
#father{position: relative; top: 100px; left: 50px; height: 460px;}
#container{position: absolute; width: 400px; height: 400px;}
#container img{position: absolute; display: none;}
.shade{width: 200px; height: 200px; position: absolute; top: 0;left: 0; display: none; border-radius: 50%; overflow: hidden; background: #000;}
.shade img{display: none; width: 800px; height: 800px; position: absolute;}