当前位置:首页 > JavaScript

js实现图片放大

2026-01-16 12:06:26JavaScript

使用 CSS transform 实现图片放大

通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。

const img = document.querySelector('img');
img.addEventListener('mouseenter', () => {
  img.style.transition = 'transform 0.3s ease';
  img.style.transform = 'scale(1.2)';
});
img.addEventListener('mouseleave', () => {
  img.style.transform = 'scale(1)';
});

使用 CSS zoom 属性

CSS 的 zoom 属性也可以实现简单的放大效果,但注意这个属性是非标准属性。

const img = document.querySelector('img');
img.addEventListener('mouseover', () => {
  img.style.zoom = '150%';
});
img.addEventListener('mouseout', () => {
  img.style.zoom = '100%';
});

创建放大镜效果

实现类似放大镜的效果,在鼠标位置显示放大后的图片区域。

const img = document.getElementById('zoom-img');
const lens = document.createElement('div');
lens.style.position = 'absolute';
lens.style.width = '100px';
lens.style.height = '100px';
lens.style.border = '1px solid #000';
lens.style.background = 'rgba(255, 255, 255, 0.3)';
lens.style.display = 'none';
document.body.appendChild(lens);

img.addEventListener('mousemove', (e) => {
  lens.style.display = 'block';
  lens.style.left = `${e.pageX - 50}px`;
  lens.style.top = `${e.pageY - 50}px`;

  const zoom = 2;
  const x = e.offsetX;
  const y = e.offsetY;
  img.style.transformOrigin = `${x}px ${y}px`;
  img.style.transform = `scale(${zoom})`;
});

img.addEventListener('mouseleave', () => {
  lens.style.display = 'none';
  img.style.transform = 'scale(1)';
});

使用第三方库实现高级放大

对于更复杂的放大效果,可以使用专门的 JavaScript 库如 zoomingmedium-zoom

安装 medium-zoom:

npm install medium-zoom

使用示例:

import mediumZoom from 'medium-zoom';

const zoom = mediumZoom('[data-zoomable]', {
  margin: 24,
  background: '#000',
  scrollOffset: 40,
});

响应式图片放大

确保放大效果在不同屏幕尺寸下都能正常工作。

function setupImageZoom() {
  const images = document.querySelectorAll('.zoomable');

  images.forEach(img => {
    const originalWidth = img.naturalWidth;
    const originalHeight = img.naturalHeight;

    img.addEventListener('click', () => {
      const scale = Math.min(
        window.innerWidth / originalWidth,
        window.innerHeight / originalHeight
      ) * 0.9;

      img.style.transform = `scale(${scale})`;
      img.style.transition = 'transform 0.3s ease';
    });
  });
}

window.addEventListener('resize', setupImageZoom);
window.addEventListener('load', setupImageZoom);

触摸设备支持

为移动设备添加触摸支持的双击放大功能。

const img = document.querySelector('img');
let lastTap = 0;

img.addEventListener('touchend', (e) => {
  const currentTime = new Date().getTime();
  const tapLength = currentTime - lastTap;

  if (tapLength < 300 && tapLength > 0) {
    if (img.style.transform === 'scale(2)') {
      img.style.transform = 'scale(1)';
    } else {
      img.style.transform = 'scale(2)';
    }
    e.preventDefault();
  }
  lastTap = currentTime;
});

js实现图片放大

标签: 图片js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 //…

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterv…

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const ch…

css图片按钮制作

css图片按钮制作

使用纯CSS创建图片按钮 通过CSS的background-image属性可以轻松将图片设置为按钮背景。关键点在于设置合适的尺寸、去除默认边框并添加交互状态: .image-btn { widt…

网页设计制作css图片

网页设计制作css图片

CSS图片处理基础方法 在网页设计中,CSS可以控制图片的尺寸、位置、边框等样式属性。通过<img>标签或背景图方式引入图片后,使用CSS属性进行调整。 img { width: 1…