以下是基于原生JavaScript实现的放大镜功能:

HTML代码:

<div id="container">
  <img id="small" src="small.jpg">
  <div id="mask"></div>
  <div id="big">
    <img src="big.jpg">
  </div>
</div>

CSS代码:

#container {
  width: 400px;
  height: 400px;
  position: relative;
}
#small {
  width: 400px;
  height: 400px;
}
#mask {
  width: 200px;
  height: 200px;
  position: absolute;
  top: 0;
  left: 0;
  background-color: rgba(0, 0, 0, 0.2);
  cursor: move;
  display: none;
}
#big {
  width: 800px;
  height: 800px;
  position: absolute;
  top: 0;
  left: 400px;
  overflow: hidden;
  display: none;
}
#big img {
  width: 800px;
  height: 800px;
}

JavaScript代码:

var container = document.getElementById("container");
var smallImg = document.getElementById("small");
var mask = document.getElementById("mask");
var bigImg = document.getElementById("big").getElementsByTagName("img")[0];

// 鼠标移入容器显示放大镜和大图
container.addEventListener("mouseenter", function() {
  mask.style.display = "block";
  bigImg.style.display = "block";
});

// 鼠标移出容器隐藏放大镜和大图
container.addEventListener("mouseleave", function() {
  mask.style.display = "none";
  bigImg.style.display = "none";
});

// 鼠标在容器内移动时更新放大镜和大图的位置
container.addEventListener("mousemove", function(event) {
  var left = event.clientX - container.offsetLeft - mask.offsetWidth / 2;
  var top = event.clientY - container.offsetTop - mask.offsetHeight / 2;
  var maxLeft = container.offsetWidth - mask.offsetWidth;
  var maxTop = container.offsetHeight - mask.offsetHeight;
  if (left < 0) {
    left = 0;
  }
  if (left > maxLeft) {
    left = maxLeft;
  }
  if (top < 0) {
    top = 0;
  }
  if (top > maxTop) {
    top = maxTop;
  }
  mask.style.left = left + "px";
  mask.style.top = top + "px";
  var scaleX = bigImg.offsetWidth / smallImg.offsetWidth;
  var scaleY = bigImg.offsetHeight / smallImg.offsetHeight;
  bigImg.style.left = -left * scaleX + "px";
  bigImg.style.top = -top * scaleY + "px";
});

注释已经详细解释了每个步骤的实现过程,可以根据需要进行修改和优化。

使用javascript写一个放大镜功能

原文地址: http://www.cveoy.top/t/topic/0q2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录