当前位置:首页 > JavaScript

js实现图片缩放

2026-01-30 13:26:46JavaScript

使用 CSS transform 实现缩放

通过修改 CSS 的 transform 属性实现缩放效果,这种方法性能较好,不会引起页面重排。

const img = document.getElementById('myImage');
let scale = 1;

function zoomIn() {
  scale += 0.1;
  img.style.transform = `scale(${scale})`;
}

function zoomOut() {
  if(scale > 0.1) {
    scale -= 0.1;
    img.style.transform = `scale(${scale})`;
  }
}

修改 width/height 属性

直接修改图片的宽度和高度属性实现缩放,这种方法会改变元素的实际尺寸。

const img = document.getElementById('myImage');
let width = img.width;

function zoomIn() {
  width += 50;
  img.style.width = `${width}px`;
}

function zoomOut() {
  if(width > 50) {
    width -= 50;
    img.style.width = `${width}px`;
  }
}

使用 canvas 实现高质量缩放

当需要更精确控制缩放质量时,可以使用 canvas 的 drawImage 方法。

const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
const img = new Image();

img.onload = function() {
  ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
};

function zoom(factor) {
  canvas.width = img.width * factor;
  canvas.height = img.height * factor;
  ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
}

响应鼠标滚轮缩放

监听鼠标滚轮事件实现交互式缩放。

const img = document.getElementById('myImage');
let scale = 1;

img.addEventListener('wheel', function(e) {
  e.preventDefault();

  if(e.deltaY < 0) {
    scale += 0.1;
  } else {
    scale = Math.max(0.1, scale - 0.1);
  }

  img.style.transform = `scale(${scale})`;
});

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

考虑使用成熟的第三方库如 medium-zoom 或 panzoom 实现更复杂的缩放功能。

js实现图片缩放

// 使用 medium-zoom
import mediumZoom from 'medium-zoom';

const zoom = mediumZoom('#myImage', {
  margin: 24,
  background: '#000',
  scrollOffset: 40
});

// 使用 panzoom
import panzoom from 'panzoom';

const element = document.getElementById('myImage');
panzoom(element, {
  maxZoom: 5,
  minZoom: 0.5
});

标签: 缩放图片
分享给朋友:

相关文章

vue实现图片打点

vue实现图片打点

实现图片打点的基本思路 图片打点功能通常指在图片上添加可交互的标记点,点击或悬停时显示相关信息。Vue实现该功能需要结合DOM操作和事件监听。 核心步骤 准备图片和容器 在Vue组件中设置一个相对定…

vue图片实现旋转

vue图片实现旋转

使用 CSS transform 实现图片旋转 在 Vue 中可以通过 CSS 的 transform 属性实现图片旋转效果。创建一个数据属性控制旋转角度,通过绑定样式动态更新。 <t…

vue实现图片切换

vue实现图片切换

实现图片切换的方法 使用v-for和v-bind动态绑定图片 通过v-for循环渲染图片列表,结合v-bind动态绑定图片路径,实现切换效果。 <template> <div&…

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…

js实现图片拖动

js实现图片拖动

实现图片拖动的步骤 使用JavaScript实现图片拖动功能,可以通过HTML5的拖放API结合事件监听实现。以下是具体方法: 设置HTML结构 为图片添加draggable属性,并设置唯一ID以便…

js实现保存图片

js实现保存图片

使用Canvas绘制并保存图片 在HTML中创建一个Canvas元素,通过JavaScript绘制内容后转换为图片并保存。Canvas的toDataURL方法可将画布内容转为Base64编码的图片数据…