Javascript实现放大镜效果(手把手教会+详细注释+完整代码)
// 放大镜效果的实现依赖于两个元素:小图(mask)和大图(view)。
// 这里使用JavaScript创建这两个元素并添加必要的样式和事件监听器。
// HTML部分:
// <div id="container">
// <img src="small.jpg" id="mask" />
// <img src="large.jpg" id="view" />
// </div>
window.onload = function() {
var container = document.getElementById('container');
var mask = document.getElementById('mask');
var view = document.getElementById('view');
// 创建放大镜并添加到容器
var magnifier = document.createElement('div');
magnifier.id = 'magnifier';
container.appendChild(magnifier);
// 事件监听器:鼠标移动时更新放大镜位置和大图显示
mask.addEventListener('mousemove', function(e) {
// 放大镜的大小和位置更新
var magnifierSize = 100; // 放大镜的大小,可以自定义
magnifier.style.width = magnifierSize + 'px';
magnifier.style.height = magnifierSize + 'px';
magnifier.style.left = e.pageX - container.offsetLeft - magnifierSize / 2 + 'px';
magnifier.style.top = e.pageY - container.offsetTop - magnifierSize / 2 + 'px';
// 根据放大镜位置计算大图的位置
var ratio = view.width / mask.width; // 大图和小图的宽度比例
var x = e.pageX - container.offsetLeft - magnifierSize / 2;
var y = e.pageY - container.offsetTop - magnifierSize / 2;
x = Math.max(Math.min(x, mask.offsetWidth - magnifierSize / ratio), 0);
y = Math.max(Math.min(y, mask.offsetHeight - magnifierSize / ratio), 0);
// 更新大图的背景位置
var bgPosX = -x * ratio;
var bgPosY = -y * ratio;
view.style.backgroundPosition = bgPosX + 'px ' + bgPosY + 'px';
});
// 鼠标进入容器时显示放大镜,离开时隐藏
container.addEventListener('mouseenter', function() {
magnifier.style.display = 'block';
});
container.addEventListener('mouseleave', function() {
magnifier.style.display = 'none';
});
};
这段代码实现了基本的放大镜效果。当鼠标在小图上移动时,放大镜会跟随鼠标,并且大图的背景位置会根据放大镜的位置变化而变化,模拟放大镜下的视图。同时,提供了鼠标进入和离开容器的事件监听器,以显示和隐藏放大镜。
评论已关闭