当前位置:首页 > JavaScript

js实现图片放大

2026-02-28 22:02:43JavaScript

使用 CSS transform 实现图片放大

通过 CSS 的 transform: scale() 属性可以实现平滑的图片放大效果。结合 transition 可以添加动画过渡。

.image-container {
  transition: transform 0.3s ease;
}
.image-container:hover {
  transform: scale(1.2);
}
<img src="example.jpg" class="image-container">

使用鼠标位置计算放大区域

通过监听鼠标事件,可以创建跟随鼠标位置的放大镜效果。

const image = document.getElementById('zoom-image');
const zoomContainer = document.getElementById('zoom-container');
const zoomedImage = document.createElement('img');
zoomedImage.src = image.src;

image.addEventListener('mousemove', (e) => {
  const { left, top, width, height } = image.getBoundingClientRect();
  const x = (e.clientX - left) / width * 100;
  const y = (e.clientY - top) / height * 100;

  zoomedImage.style.transformOrigin = `${x}% ${y}%`;
  zoomedImage.style.transform = 'scale(2)';
  zoomContainer.appendChild(zoomedImage);
});

image.addEventListener('mouseleave', () => {
  zoomContainer.removeChild(zoomedImage);
});

使用 canvas 实现像素级放大

对于需要更高精度的放大效果,可以使用 canvas 绘制放大区域。

function setupMagnifier(image, canvas) {
  const ctx = canvas.getContext('2d');
  const zoomLevel = 2;
  const size = 100;

  image.addEventListener('mousemove', (e) => {
    const rect = image.getBoundingClientRect();
    const x = e.clientX - rect.left;
    const y = e.clientY - rect.top;

    ctx.drawImage(
      image,
      x - size/2, y - size/2, size, size,
      0, 0, size * zoomLevel, size * zoomLevel
    );
  });
}

使用第三方库实现高级效果

对于更复杂的需求,可以考虑使用专门的库:

安装 medium-zoom 示例:

import mediumZoom from 'medium-zoom';

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

响应式图片放大处理

为确保在不同屏幕尺寸下正常工作,需要添加响应式处理:

js实现图片放大

function handleResponsiveZoom() {
  const imageWidth = document.getElementById('zoom-image').naturalWidth;
  const screenWidth = window.innerWidth;

  const maxScale = screenWidth < 768 ? 1.5 : 2.5;
  document.querySelector('.zoom-lens').style.setProperty('--scale', maxScale);
}

window.addEventListener('resize', handleResponsiveZoom);

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

相关文章

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获…

h5实现全景图片

h5实现全景图片

H5 实现全景图片的方法 使用 Three.js 库 Three.js 是一个强大的 3D 库,可以用于创建全景图片效果。以下是一个简单的实现步骤: 引入 Three.js 库 <scri…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现换肤

js实现换肤

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