好多童鞋都在纠结放大镜怎么做的问题
没思路,不知道怎么打,从哪儿开始打,接下来我就把代码发到下面,还有注释!
1:这是css代码块:
<style>
* {
margin: 0;
padding: 0;
}
#small {
width: 500px;
height: 500px;
float: left;
position: relative;
margin-left: 200px;
margin-top: 200px;
}
#small img {
width: 500px;
height: 500px;
}
#mask {
width: 150px;
height: 150px;
background: rgba(255, 255, 255, 0.5);
position: absolute;
top: 0;
left: 0;
cursor: move;
display: none;
}
#big {
width: 500px;
height: 500px;
overflow: hidden;
float: left;
margin-left: 40px;
margin-top: 200px;
display: none;
}
#big img {
width: 1500px;
height: 1500px;
}
</style>
2:html代码块:
<div id="small">
<img src="./oss_58f47a138e37f.jpg" alt="">
<div id="mask"></div>
</div>
<div id="big">
<img src="./oss_58f47a138e37f.jpg" alt="">
</div>
3:jquery代码块:
<script src="./jquery-3.5.1.js"></script> //载入jquery;
<script>
// 鼠标经过小图显示 遮罩和大盒子
$("#small").mouseenter(function () {
$("#mask,#big").show()
}).mouseleave(function () {
$("#mask,#big").hide()
})
$("#small").mousemove(function (e) {
// e.pageX 和e.pageY 鼠标位置
var x = e.pageX - $("#small").offset().left - $("#mask").width() / 2;
var y = e.pageY - $("#small").offset().top - $("#mask").height() / 2;
// 最小限制
x < 0 ? x = 0 : x;
y < 0 ? y = 0 : y;
// 最大限制
x > $("#small").width() - $("#mask").width() ? x = $("#small").width() - $("#mask").width() : x;
y > $("#small").height() - $("#mask").height() ? y = $("#small").height() - $("#mask").height() : y;
$("#mask").css({
left: x + "px",
top: y + "px"
})
// 算出小盒子和大图片的比例
var bilix = $("#big img").width() / $("#small").width();
var blliy = $("#big img").height() / $("#small").height();
// 根据遮罩的top和left 来滚动大盒子的 scrollLeft和scrollTop
$("#big").scrollLeft(x * bilix);
$("#big").scrollTop(y * blliy)
})
</script>