当前位置:首页 > JavaScript

js 实现图片 放大

2026-04-03 22:26:04JavaScript

使用 CSS transform 实现图片放大

通过 CSS 的 transform: scale() 属性可以实现图片放大效果。结合 JavaScript 监听鼠标事件来控制放大比例。

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

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

使用 CSS zoom 属性

虽然 zoom 不是标准属性,但在某些场景下可以使用。注意浏览器兼容性问题。

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

创建放大镜效果

实现局部放大的效果,需要创建一个跟随鼠标的放大区域。

const img = document.getElementById('zoom-img');
const lens = document.createElement('div');
lens.className = 'img-zoom-lens';
img.parentElement.insertBefore(lens, img);

img.addEventListener('mousemove', (e) => {
  const { left, top, width, height } = img.getBoundingClientRect();
  const x = e.pageX - left;
  const y = e.pageY - top;

  lens.style.display = 'block';
  lens.style.left = `${x - 50}px`;
  lens.style.top = `${y - 50}px`;
  lens.style.backgroundImage = `url(${img.src})`;
  lens.style.backgroundSize = `${width * 2}px ${height * 2}px`;
  lens.style.backgroundPosition = `-${x * 2 - 50}px -${y * 2 - 50}px`;
});

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

对应 CSS:

.img-zoom-lens {
  position: absolute;
  width: 100px;
  height: 100px;
  border: 1px solid #ddd;
  border-radius: 50%;
  pointer-events: none;
  display: none;
  background-repeat: no-repeat;
}

使用第三方库

考虑使用专门的图片放大库如 zoomingmedium-zoom 可以简化实现。

安装 zooming:

npm install zooming

使用示例:

import Zooming from 'zooming';

const zooming = new Zooming({
  bgColor: '#000',
  bgOpacity: 0.9
});

zooming.listen('.zoomable-image');

响应式图片放大

针对不同屏幕尺寸调整放大比例,确保良好的用户体验。

js 实现图片 放大

function responsiveZoom() {
  const img = document.querySelector('img');
  const scale = window.innerWidth < 768 ? 1.2 : 1.5;

  img.addEventListener('mouseenter', () => {
    img.style.transform = `scale(${scale})`;
  });

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

window.addEventListener('resize', responsiveZoom);
responsiveZoom();

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

相关文章

vue实现图片预览

vue实现图片预览

Vue 实现图片预览的方法 使用 Element UI 的 el-image 组件 Element UI 提供了 el-image 组件,支持图片预览功能。通过设置 preview-src-list…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

vue实现图片预览

vue实现图片预览

实现图片预览功能 在Vue中实现图片预览功能可以通过多种方式完成,常见的有使用原生HTML5的<dialog>元素、第三方库如viewer.js或vue-photo-preview,以及自…

react如何渲染图片

react如何渲染图片

在React中渲染图片的方法 使用<img>标签直接引入本地图片 将图片文件放入项目目录(如src/assets),通过相对路径引入。需注意Webpack可能需要配置file-loader…

vue实现展示图片

vue实现展示图片

在 Vue 中展示图片的方法 静态图片展示 静态图片通常存放在项目的 public 或 assets 目录下。使用 img 标签直接引用。 <template> <img sr…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…