Skip to content

Vue Image Magnifier

Image Magnifier是基于Vue 3和TypeScript开发的图像放大镜组件,支持多种交互模式和自定义配置。该组件允许用户在悬停或触摸鼠标时查看图像的放大区域,适用于电子商务产品展示、图像细节查看和其他场景

特性

  1. 支持多种形状:规则矩形、圆角矩形和圆形容器形状

  2. 弹性定位:放大区域可以在原始图像的四个方向上配置:上、下、左、右

  3. 响应式设计:支持以各种CSS单位(px、%、rem、em、vh、vw)定义维度、

  4. 触控支持:完美适应移动触控操作

  5. 高性能:使用requestAnimationFrame实现节流优化

  6. 高度可定制:可以配置掩模层颜色、大小、位置等

安装

shell
npm install @zraylin/vue-image-magnifier

使用

全局注册组件

typescript
//main.ts  
import {ImageMagnifier} from "@zraylin/vue-image-magnifier";
import '@zraylin/vue-image-magnifier/dist/index.css'
//...

app.component('ImageMagnifier',ImageMagnifier);
vue
//xxx.vue
<template>
  <image-magnifier magnifier-image="x.png"></image-magnifier>
</template>

局部组件注册

vue
//xxx.vue
<script setup lang="ts">
  import {ImageMagnifier} from '@zraylin/vue-image-magnifier';
  import '@zraylin/vue-image-magnifier/dist/index.css'
</script>

<template>
  <image-magnifier
      magnifier-image="xxx.png"
      width="200px"
      height="200px"
      mask-size="50%"
      magnifier-scale="1"
      :zoom="2"
      show-in-mask
  >

  </image-magnifier>
</template>

插件方式安装

typescript
//main.ts
import { createApp } from 'vue'
import './style.css'
import ImageMagnifier from '@zraylin/vue-image-magnifier'
import '@zraylin/vue-image-magnifier/dist/index.css'

import App from './App.vue'

const app = createApp(App)

app.use(ImageMagnifier)

app.mount('#app')
vue
<template>
<image-magnifier
    magnifier-image="xxx.png"
    width="200px"
    height="200px"
    mask-size="50%"
    magnifier-scale="1"
    :zoom="2"
    show-in-mask
>
</image-magnifier>
</template>

基本用法

vue
<image-magnifier width="200px" height="200px" magnifier-image="x.png"></image-magnifier>

全属性使用示例

vue
<image-magnifier
  width="200px"
  height="200px"
  magnifier-image="product-detail.jpg"
  magnifier-shape="squareWithRadius"
  radius-size="10%"
  magnifier-scale="2"
  magnifier-direction="right"
  :box-gap="1"
  :need-mask="true"
  mask-size="20%"
  mask-color="rgba(0,0,0,0.3)"
  :show-in-mask="false"
  :zoom="3"
></image-magnifier>

属性说明

尺寸控制

属性名类型默认值描述
width字符串100%盒子宽度
height字符串100%盒子高度

形状控制

属性名类型默认值描述
magnifier-shapenormal | circle | squareWithRadiusnormal盒子的形状
radius-size字符串5%圆角

缩放控制

属性名类型默认值描述
magnifier-scale1 | 2 | 32原盒与放大盒之间大小比例
zoom数字3放大倍率

定位控制

属性名类型默认值描述
magnifier-directionleft | right | bottom | topright原盒与放大盒的位置关系
box-gap数字1原盒与放大盒之间的间隙

遮罩层控制

属性名类型默认值描述
need-mask布尔true显示/隐藏遮罩层
mask-size10% | 20% | 30% | 40% | 50%10%遮罩层大小
mask-color字符串#858080遮罩层颜色
show-in-mask布尔false是否在遮罩层中显示放大图片