Skip to content

Zoom 缩放

介绍

控制元素在视图内缩放、移动,常用于画廊、图片查看等场景。支持双指捏合缩放(以双指中点为锚点)、放大后单指拖动,以及可选的双指旋转。

TIP

建议在真机或开启触控模拟的环境下体验双指手势。

基础用法

将需要缩放的内容放入 Zoom 组件即可。

html
<vd-zoom>
  <view class="box"></view>
</vd-zoom>

缩放图片

可包裹 Image 等媒体内容。

html
<vd-zoom>
  <vd-image src="..." width="100%" mode="widthFix" />
</vd-zoom>

自定义缩放范围

通过 min-zoommax-zoom 限制缩放比例。

html
<vd-zoom :min-zoom="1" :max-zoom="3">
  <vd-image src="..." width="100%" mode="widthFix" />
</vd-zoom>

双指旋转

通过 rotatable 开启双指旋转,松手后吸附到最近的 90°

html
<vd-zoom rotatable>
  <vd-image src="..." width="100%" mode="widthFix" />
</vd-zoom>

盒内自由拖动

默认 moveable-when-overflowtrue:仅内容超出容器时可拖(适合相册预览)。设为 false 后,内容小于容器时也可在盒内拖动。

html
<vd-zoom :moveable-when-overflow="false">
  <view class="box"></view>
</vd-zoom>

手势回调

底层 useTouchZoom 可通过 onZoom 监听手势阶段(start / move / end)。

ts
import { useTouchZoom } from '@vital-design/use';

const { onZoom, state } = useTouchZoom({ /* ... */ });

onZoom((type, event) => {
  console.log(type, event.scale, event.rotate, event.moving, event.boundRect, event.viewRect);
});

API

Props

参数说明类型默认值
max-zoom最大缩放倍数number | string5
min-zoom最小缩放倍数number | string0.3
zoomable是否允许缩放booleantrue
moveable是否允许移动booleantrue
moveable-when-overflow仅内容超出容器时允许拖动;为 false 时内容小于容器也可在盒内拖动booleantrue
rotatable是否允许双指旋转booleanfalse
wheel-zoom滚轮单次缩放步进number | string0.1

代替原始 Props

参数说明类型默认值
custom-id根节点idstring-
custom-class根节点类名ClassValue-
custom-style根节点样式StyleValue-

Events

事件名说明回调参数
click点击时触发MouseEvent

Slots

名称说明
default自定义内容

类型定义

组件导出以下类型定义:

ts
import type {
  ZoomProps,
  ZoomEmits,
} from 'vital-design';

手势能力由 @vital-design/useuseTouchZoom 提供,ImagePreview 内部同样复用。

赣ICP备2025061025号-1