效果图:

CSS代码块:
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 500px;
height: 500px;
margin: 10px;
border: 1px solid #ccc;
position: relative;
}
.big {
width: 400px;
height: 300px;
position: absolute;
top: 0;
left: 510px;
border: 1px solid #ccc;
overflow: hidden;
display: none;
}
.mask {
width: 175px;
height: 175px;
background: rgba(255, 255, 225, 0.4);
position: absolute;
top: 0;
left: 0;
cursor: move;
display: none;
}
.small {
position: relative;
}
.box img {
vertical-align: top;
}
#bigBox img {
position: absolute;
}
</style>
HTML代码块
<div class="box" id="box">
<div id="smallBox" class="small ">
<img src="img/Rog-1.jpg" width="500">
<div id="mask" class="mask"></div>
</div>
<div id="bigBox" class="big">
<img src="img/Rog-1.jpg" alt="" id="bigPic">
</div>
</div>
Scrpit代码块
<script>
var smallBox = document.getElementById('smallBox');
var mask = document.getElementById('mask');
var bigBox = document.getElementById('bigBox');
var box = document.getElementById('box')
var bigPic = document.getElementById('bigPic')
//鼠标经过小盒子,显示大盒子
smallBox.onmouseover = function() {
bigBox.style.display = "block";
mask.style.display = "block";
}
smallBox.onmouseout = function() {
bigBox.style.display = "none";
mask.style.display = "none";
}
smallBox.onmousemove = function(event) {
//遮罩跟随鼠标
var event = event || widow.event;
var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
//计算mask的位置
var targetX = pageX - box.offsetLeft - mask.offsetWidth / 2;
var targetY = pageY - box.offsetLeft - mask.offsetHeight / 2;
//限制mask移动范围
if (targetX < 0) targetX = 0;
if (targetY < 0) targetY = 0;
if (targetX > smallBox.offsetWidth - mask.offsetWidth) targetX = smallBox.offsetWidth - mask.offsetWidth;
if (targetY > smallBox.offsetHeight - mask.offsetHeight) targetY = smallBox.offsetHeight - mask.offsetHeight;
mask.style.left = targetX + "px";
mask.style.top = targetY + "px";
//按照比例移动大图
var bigToMove = bigPic.offsetWidth - bigBox.offsetWidth;
var maskToMove = smallBox.offsetWidth - mask.offsetWidth;
var rate = bigToMove / maskToMove;
bigPic.style.left = -rate * targetX + "px";
bigPic.style.top = -rate * targetY + "px";
}
</script>
本文来自博客园,作者:最帅爸爸,转载请注明原文链接:https://www.cnblogs.com/zsbb
浙公网安备 33010602011771号