基于js实现的鼠标滚动图片等比例缩
通过监听鼠标滚轮事件,获取滚轮滚动方向,然后动态调整图片的宽度和高度,从而实现缩放效果。为了保持图片的纵横比不变,需要在缩放时同时调整宽度和高度。
<img src="your_image.jpg" id="myImage" />
<script>
const image = document.getElementById('myImage');
image.addEventListener('wheel', (event) => {
event.preventDefault(); // 阻止默认滚动行为
// 获取当前图片的宽度和高度
const currentWidth = image.clientWidth;
const currentHeight = image.clientHeight;
// 根据滚轮方向调整大小
if (event.deltaY > 0) { // 向下滚动,缩小
image.style.width = currentWidth * 0.9 + 'px';
image.style.height = currentHeight * 0.9 + 'px';
} else { // 向上滚动,放大
image.style.width = currentWidth * 1.1 + 'px';
image.style.height = currentHeight * 1.1 + 'px';
}
});
</script>
getElementById
获取到需要缩放的图片元素。addEventListener
监听 wheel
事件,即鼠标滚轮滚动事件。event.preventDefault()
阻止浏览器默认的滚动行为,确保我们自定义的缩放行为生效。style.width
和 style.height
属性来实现缩放。transition
属性,让缩放过程更加平滑。wheel
事件的支持可能略有差异,需要进行兼容性处理。requestAnimationFrame
来优化动画性能。
const image = document.getElementById('myImage');
const minScale = 0.5;
const maxScale = 2;
let currentScale = 1;
image.addEventListener('wheel', (event) => {
event.preventDefault();
const delta = event.deltaY > 0 ? -0.1 : 0.1;
currentScale += delta;
currentScale = Math.min(Math.max(currentScale, minScale), maxScale);
image.style.transform = `scale(${currentScale})`;
});
注意: 上述代码中,我们使用 transform: scale()
来实现缩放,这种方式比直接修改 width
和 height
更加灵活,并且可以配合其他 CSS3 变换效果。
通过以上代码,我们可以轻松实现鼠标滚动时图片的等比例缩放。你可以根据实际需求,对代码进行进一步的优化和扩展,以实现更丰富的交互效果。
更多优化点:
希望这个解答能帮助你实现你的需求!