js实现的鼠标滚动控制图片在原始位
你希望实现这样的效果:当鼠标滚动时,图片在原位置进行缩放,而不是整个页面滚动。这通常用于查看图片的细节,提供更好的用户体验。
<div class="image-container">
<img src="your_image.jpg" alt="图片描述" class="zoom-image">
</div>
.image-container {
overflow: hidden; /* 隐藏超出部分 */
}
.zoom-image {
transition: transform 0.3s ease-in-out; /* 过渡动画 */
}
const imageContainer = document.querySelector('.image-container');
const image = document.querySelector('.zoom-image');
let scale = 1; // 初始缩放比例
imageContainer.addEventListener('wheel', (event) => {
event.preventDefault(); // 阻止页面滚动
// 获取滚轮滚动方向
const delta = event.deltaY > 0 ? -0.1 : 0.1;
// 计算新的缩放比例
scale += delta;
scale = Math.min(Math.max(scale, 0.5), 2); // 设置缩放范围
// 设置图片的缩放变换
image.style.transform = `scale(${scale})`;
// 计算图片的偏移量,使其在原位置缩放
const rect = image.getBoundingClientRect();
const x = event.clientX - rect.left;
const y = event.clientY - rect.top;
image.style.transformOrigin = `${x}px ${y}px`;
});
overflow: hidden
防止图片超出容器时产生滚动条。transition
属性:为缩放效果添加过渡动画。wheel
事件,获取滚轮滚动方向和位置。transform: scale()
方法缩放图片。transform-origin
属性,使图片以鼠标位置为中心缩放。transition
属性,让缩放过程更加平滑。transform-origin
设置为 50% 50%
。requestAnimationFrame
来优化动画性能。通过以上代码,我们可以实现鼠标滚动控制图片在原位置缩放的效果。这个功能在查看图片细节、放大缩小地图等场景中非常有用。你可以根据自己的需求,对代码进行进一步的优化和扩展。
想了解更多,可以提出以下问题:
希望这个解答能帮助你!