当前位置:首页 > 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
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

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

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

vue 实现图片

vue 实现图片

Vue 实现图片加载与展示的方法 在 Vue 中实现图片加载和展示可以通过多种方式完成,包括静态资源引用、动态绑定、懒加载等。以下是几种常见的方法: 静态资源引用 将图片放在项目的 public 或…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…