vue- pinch- scroll- zoom (英语)
Vue 组件, 使用鼠标事件或移动设备上的两个手指来提供内容滚动和缩放
重要说明
截至目前版本,此组件与Vue"^3.2.47"兼容并进行充分测试. 请确保您正在使用这个版本的Vue 或以后用于最佳性能和相容性. 我们将继续维持和更新这一构成部分,以便支持Vue的后期版本.
示例:
安装
npm i @coddicat/vue-pinch-scroll-zoom
使用量
主关:
import '@coddicat/vue-pinch-scroll-zoom/style.css';
<PinchScrollZoom
ref="zoomer"
within
centered
key-actions
:width="300"
:height="400"
:min-scale="0.3"
:max-scale="6"
@scaling="e => onEvent('scaling', e)"
@startDrag="e => onEvent('startDrag', e)"
@stopDrag="e => onEvent('stopDrag', e)"
@dragging="e => onEvent('dragging', e)"
style="border: 1px solid black"
:content-width="500"
:content-height="500"
>
<img src="https://picsum.photos/500/500" width="500" height="500" />
</PinchScrollZoom>
<script setup lang="ts">
import { ref, reactive } from 'vue';
import PinchScrollZoom, {
type PinchScrollZoomEmitData,
type PinchScrollZoomExposed
} from '@coddicat/vue-pinch-scroll-zoom';
const zoomer = ref<PinchScrollZoomExposed>();
function onEvent(name: string, e: PinchScrollZoomEmitData): void {
state.eventName = name;
state.eventData = e;
state.scale = e.scale;
state.originX = e.originX;
state.originY = e.originY;
state.translateX = e.translateX;
state.translateY = e.translateY;
}
function reset(): void {
zoomer.value?.setData({
scale: 1,
originX: 150,
originY: 200,
translateX: -100,
translateY: -50
});
}
道具
以下属性不支持“.async”修改符
| 名称 | 所需经费 | 说明 | 默认 |
|---|---|---|---|
| 宽度 | 对 | 可见区域宽度 | |
| 高度 | 对 | 可见区域高度 | |
| 内容宽度 | 没有 | 当内容宽度与容器宽度不同时,应当定义 | |
| 内容高 | 没有 | 当内容高度与容器高度不同时,应当定义 | |
| 分钟比例 | 没有 | 最小允许缩放 | 0.3 (韩语) |
| 最大比例 | 没有 | 最大允许缩放量 | 页:1 |
| 在内部 | 没有 | 将内容滚动限制在其边框内 | 真实 |
| 轮速 | 没有 | 鼠标转盘时放大速度 | 0.001号 |
| 缩放 | 没有 | 内容的大小 | 1个 |
| 来源x | 没有 | 变换原生-x | 宽度/2 |
| 来源y | 没有 | 变原型-y | 高度/ 频率 2个 |
| 翻译-x | 没有 | 转换: 翻译 X | 0 个 |
| 翻译-y | 没有 | 转换: 翻译Y | 0 个 |
| 节流延迟 | 没有 | 渲染延迟( 毫秒) | 第25条 |
| 可拖动 | 没有 | 可拖动/关闭 | 真实 |
| 居中 | 没有 | 在可见区域集中内容 | 虚假 |
| 密钥动作 | 没有 | 使关键新闻事件(重点)能够缩放和移动 | 虚假 |
| 选项卡 | 没有 | 选项卡索引属性 | 0 如果启用了关键动作, 对关键事件需要值 |
| 密钥-分区-速度 | 没有 | 由关键事件缩放时的缩放速度 | 0.2 (韩语) |
| 密钥移动速度 | 没有 | 按关键事件移动时的移动速度 | 10个 |
| 键控 | 没有 | 关键守则和行动的记录 | 参见 PinchScrollZoom 默认控制 ("+","-",箭头) |
| 翻译 3d | 没有 | 在“ 翻译” 和“ 翻译3d” 转换之间切换 | 真实 |
活动
以下事件与理由相关:
export interface PinchScrollZoomEmitData {
x: number;
y: number;
scale: number;
originX: number;
originY: number;
translateX: number;
translateY: number;
}
- 启动 Drag
- 停止达格
- 拖动
- 缩放
被曝光的方法
更新数据
.setData(data: PinchScrollZoomSetData);
export interface PinchScrollZoomSetData {
scale: number;
originX: number;
originY: number;
translateX: number;
translateY: number;
}
在可见区域集中图像内容
.centralize();
在可见区域移动图像内容
.manualMove(deltaX: number, deltaY: number);
在可见区域放大图像内容
.manualZoom(factor: number); //factor relative to the current value, so if current scale is 2 and execute .manualZoom(2) the new scale value will be 4