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

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

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

js实现图片放大

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
    );
  });
}

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

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

js实现图片放大

安装 medium-zoom 示例:

import mediumZoom from 'medium-zoom';

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

响应式图片放大处理

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

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
分享给朋友:

相关文章

vue实现图片循环

vue实现图片循环

实现图片循环的基本方法 在Vue中实现图片循环通常使用v-for指令结合数组数据。以下是基础实现方式: <template> <div> <img v-f…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 //…

css图片按钮制作

css图片按钮制作

使用纯CSS创建图片按钮 通过CSS的background-image属性可以轻松将图片设置为按钮背景。关键点在于设置合适的尺寸、去除默认边框并添加交互状态: .image-btn { wid…

css网页制作漂浮图片

css网页制作漂浮图片

使用CSS实现漂浮图片效果 通过CSS的animation属性和@keyframes规则可以轻松实现图片漂浮效果。以下是几种常见实现方式: 基础漂浮动画 通过关键帧定义图片的垂直移动,模拟漂浮感:…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback)…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="sli…