<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style> * { margin: 0; padding: 0; } .box { width: 350px; height: 350px; ...
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
* {
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;
border: 1px solid #ccc;
overflow: hidden;
display: none;
}
.mask {
width: 175px;
height: 175px;
background: rgba(255, 255, 0, 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>
</head>
<body>
<div class="box" id="box">
<!--我們一來就看到的盒子-->
<div id="smallBox" class="small">
<!--smallbox裡面的一張小圖片-->
<img src="images/001.jpg" width="350" alt=""/>
<!--mask: 黃色的div,一開始是隱藏的-->
<div id="mask" class="mask"></div>
</div>
<!--smallBox旁邊的大盒子,一開始隱藏的-->
<div id="bigBox" class="big">
<!--大圖片,會在大盒子裡面移動。我們只能看到圖片的一部分。-->
<img src="images/0001.jpg" width="800" alt=""/>
</div>
</div>
<script>
var box = document.getElementById("box");
var smallBox = document.getElementById("smallBox");
var mask = document.getElementById("mask");
var bigBox = document.getElementById("bigBox");
var bigImg = bigBox.children[0];
//1. 給smallBox註冊滑鼠經過事件, 讓mask和bigBox顯示出來
smallBox.onmouseover = function () {
mask.style.display = "block";
bigBox.style.display = "block";
}
smallBox.onmouseout = function () {
mask.style.display = "none";
bigBox.style.display = "none";
}
//產品經理
smallBox.onmousemove = function (e) {
//讓mask跟著滑鼠移動, 滑鼠在smallBox中的位置
//spaceX:滑鼠在smallbox中的x的位置. offsetLeft獲取的是 盒子距離有定位的父元素的距離
var spaceX = e.pageX - box.offsetLeft;
var spaceY = e.pageY - box.offsetTop;
var x = spaceX - mask.offsetWidth/2;
var y = spaceY- mask.offsetHeight/2;
//x的最小值:0 最大值: smallBox.offsetWidth - mask.offsetWidth
if(x <= 0){
x = 0;
}
if(x >= smallBox.offsetWidth - mask.offsetWidth){
x = smallBox.offsetWidth - mask.offsetWidth;
}
if(y <= 0){
y = 0;
}
if(y >= smallBox.offsetHeight - mask.offsetHeight){
y = smallBox.offsetHeight - mask.offsetHeight;
}
//設置x和y必須在判斷後面
mask.style.left = x + "px";
mask.style.top = y + "px";
//移動大圖片
// 假設吃饅頭的速度是勻速的
// 助教 10分鐘 能夠吃100個饅頭
// 班主任10分鐘 能吃300個饅頭
// 助教 吃完了50個饅頭了
// 問:班主任吃完了 多少個饅頭
// 助教當前吃的饅頭數/助教能吃的總饅頭數 = 班主任當前吃的饅頭數/班主任能吃的總饅頭數
// mask當前移動的距離/smallBox的寬度 = 大圖片移動的距離/大圖片的寬度
bigImg.style.left = - x/smallBox.offsetWidth * bigImg.offsetWidth + "px";
bigImg.style.top = - y/smallBox.offsetHeight * bigImg.offsetHeight + "px";
}
</script>
</body>
</html>