当前位置:首页 > 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);

触摸设备支持

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

js实现图片放大

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
分享给朋友:

相关文章

vue实现图片拖拽

vue实现图片拖拽

实现图片拖拽功能 在Vue中实现图片拖拽功能可以通过HTML5的拖放API结合Vue的事件处理来完成。以下是一个完整的实现方法: 基础拖拽实现 为图片元素添加draggable属性并绑定相关事件:…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

css制作图片

css制作图片

使用CSS创建图片效果 CSS可以通过多种方式实现图片的显示、处理和特效。以下是几种常见的方法: 使用background-image属性 在CSS中可以通过background-image属性将图…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…