当前位置:首页 > 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 属性

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

js实现图片缩放

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 方法。

js实现图片缩放

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 实现更复杂的缩放功能。

// 使用 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 实现图片查看功能 在 Vue 中实现图片查看功能,可以通过原生实现或使用第三方库。以下是几种常见的方法: 原生实现方式 使用 Vue 的指令和事件绑定实现基础的图片查看功能。 <…

vue图片实现多选

vue图片实现多选

Vue图片多选实现方法 基础实现方案 使用v-model绑定数组配合input[type="checkbox"]实现多选功能。创建图片列表数据时,每个图片对象应包含唯一标识符: data() {…

vue实现图片轮播

vue实现图片轮播

Vue 实现图片轮播的方法 使用第三方库(推荐) 安装 vue-awesome-swiper 库,这是基于 Swiper 的 Vue 封装: npm install swiper vue-awes…

vue实现拖动图片验证

vue实现拖动图片验证

Vue 实现拖动图片验证功能 核心思路 拖动图片验证通常需要用户将图片拖动到指定区域或按正确顺序排列。实现时需要处理拖拽事件、验证逻辑和视觉反馈。 实现步骤 1. 基础组件结构 <templ…

vue2实现图片懒加载

vue2实现图片懒加载

实现图片懒加载的方法 在Vue2中实现图片懒加载可以通过以下方法完成,核心原理是监听图片是否进入可视区域,再动态加载图片资源。 使用IntersectionObserver API Intersec…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…