<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 800px;
height: 400px;
/* border: 1px solid; */
margin: 50px auto;
position: relative;
}
.box .sm {
width: 200px;
height: 200px;
/* border: 1px solid; */
position: absolute;
top: 0;
left: 0;
}
.box .sm img {
width: 200px;
height: 200px;
}
.box .mask {
width: 80px;
height: 80px;
background: rgba(0, 0, 0, .5);
position: absolute;
top: 0;
left: 0;
cursor: move;
}
.box .big {
width: 300px;
height: 300px;
/* border: 1px solid; */
position: absolute;
top: 0;
left: 300px;
display: none;
overflow: hidden;
}
.box .big img {
width: 400px;
height: 400px;
position: absolute;
top: 0;
left: 0;
}
</style>
</head>
<body>
<div class="box">
<div class="sm">
<img src="images/1.jpg" alt="">
<div class="mask"></div>
</div>
<div class="big">
<img src="images/1.jpg" alt="" class="bigimg">
</div>
</div>
<script>
var sm = document.querySelector(".sm");
var box = document.querySelector(".box");
var mask = document.querySelector(".mask");
var bigimg = document.querySelector(".bigimg");
var big = document.querySelector(".big");
// console.log(sm,box,mask,bigimg,big);
sm.onmouseover = function () {
big.style.display = "block"
mask.style.display = "block"
}
sm.onmouseout = function () {
big.style.display = "none"
mask.style.display = "none"
}
sm.onmousemove = function (event) {
var event = event || window.event;
var x = event.clientX - box.offsetLeft - mask.offsetWidth / 2;
var y = event.clientY - box.offsetTop - mask.offsetHeight / 2;
// console.log(x, y);
if (x <= 0) {
x = 0;
}
if (x >= sm.offsetWidth - mask.offsetWidth) {
x = sm.offsetWidth - mask.offsetWidth;
}
if (y <= 0) {
y = 0;
}
if (y >= sm.offsetHeight - mask.offsetHeight) {
y = sm.offsetHeight - mask.offsetHeight;
}
mask.style.left = x + "px";
mask.style.top = y + "px";
var w = x / (sm.offsetWidth - mask.offsetWidth);
var h = y / (sm.offsetHeight - mask.offsetHeight);
// console.log(w, h);
bigimg.style.left = -w * (bigimg.offsetWidth - big.offsetWidth) + "px";
bigimg.style.top = -h * (bigimg.offsetHeight - big.offsetHeight) + "px";
}
</script>
</body>
</html>
JavaScript放大镜(原生写法)
最新推荐文章于 2025-05-22 14:38:07 发布