# v2-drag-zoom **Repository Path**: ericfang/v2-drag-zoom ## Basic Information - **Project Name**: v2-drag-zoom - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-16 - **Last Updated**: 2026-05-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # V2 Drag Zoom 一个轻量、高效的缩放拖拽组件(Vue 2版本),帮助开发人员快速实现类似地图缩放拖拽等功能。 **[📖 中文文档](https://gitee.com/ericfang/v2-drag-zoom/blob/master/README.zh-CN.md)** | **[📖 English Documentation](https://gitee.com/ericfang/v2-drag-zoom/blob/master/README.md)** > 需要 Vue 3 版本?查看 [**v3-drag-zoom**](https://www.npmjs.com/package/v3-drag-zoom) ## 🚀 特性 - ✅ 支持拖拽和缩放功能 - ✅ 支持多种对齐模式(cover、contain、auto) - ✅ 支持跟随鼠标缩放 - ✅ 支持固定大小的子元素 - ✅ 支持自定义标记点 - ✅ TypeScript 支持 - ✅ 响应式设计,自动适应容器大小变化 - ✅ 平滑动画过渡效果 - ✅ 支持加载状态显示 ## 📦 安装 ```bash npm install v2-drag-zoom ``` ## 🎯 用途介绍 V2 Drag Zoom 是一个专为 Vue 2 设计的交互式缩放拖拽组件,适用于需要实现以下功能的场景: - **地图应用**:实现地图的缩放和平移功能 - **图片查看器**:支持图片的放大缩小和拖拽浏览 - **图表交互**:允许用户缩放和移动复杂的数据可视化图表 - **设计工具**:提供画布的缩放和拖拽能力 - **文档预览**:支持大型文档或图纸的局部查看 ## 🏗️ 架构介绍 该组件采用模块化设计,主要包含两个核心组件: ### V2DragZoomContainer 主容器组件,负责管理整体的缩放和拖拽逻辑,包括: - 容器尺寸检测和自适应 - 缩放计算和动画控制 - 鼠标事件处理 - 子组件协调 ### V2DragZoomItem 子项组件,用于在可缩放容器内放置可交互的元素,如: - 标记点 - 注释 - 图标 - 其他自定义内容 组件间通过 Vue 的 provide/inject 机制进行通信,确保良好的解耦和可扩展性。 ## 💻 使用指南 ### 全局注册 ```javascript import Vue from 'vue'; import V2DragZoom from 'v2-drag-zoom'; Vue.use(V2DragZoom); ``` ### 组件使用 ```vue ``` ### 完整示例 ```vue ``` ## 📚 API 参考 ### V2DragZoomContainer Props | 参数 | 说明 | 类型 | 默认值 | |------|------|------|--------| | autoResize | 根据父元素自动调整大小 | boolean | true | | followPointer | 缩放时是否跟随鼠标 | boolean | true | | maxZoom | 最大缩放比例 | number | 100 | | minZoom | 最小缩放比例 | number | 0.01 | | align | 显示模式 | 'cover' \| 'contain' \| 'auto' | 'contain' | | zoomFactor | 缩放因子 | number | 0.1 | | draggable | 是否可拖拽 | boolean | true | | zoomable | 是否可缩放 | boolean | true | | loading | 加载中状态 | boolean | false | | animateDuration | 缩放动画时长(毫秒) | number | 200 | ### V2DragZoomContainer Events | 事件名 | 说明 | 回调参数 | |--------|------|----------| | onMove | 移动过程中触发 | ContainerEvent | | onMoveFinished | 移动结束时触发 | ContainerEvent | | onZoom | 缩放时触发 | ContainerEvent | ### V2DragZoomContainer Methods | 方法名 | 说明 | 参数 | |--------|------|------| | reset | 重置到初始位置和大小 | - | | zoom | 手动缩放 | zoom: number (缩放因子) | ### V2DragZoomContainer Slots | Slot | 说明 | |------|------| | default | 放置主要内容(图片、图表等) | | loading | 自定义加载状态显示内容 | ### V2DragZoomItem Props | 参数 | 说明 | 类型 | 默认值 | |------|------|------|--------| | position | 位置(百分比) | { x: number, y: number } | 必填 | | offset | 偏移量百分比 | [number, number] | [-50, -50] | | fixedSize | 是否固定大小 | boolean | false | | rotate | 旋转角度 | number | 0 | | draggable | 是否可拖拽 | boolean | false | ### V2DragZoomItem Events | 事件名 | 说明 | 回调参数 | |--------|------|----------| | onMove | 移动过程中触发 | Position | | onMoveFinished | 移动结束时触发 | Position | | update:position | 位置更新时触发(支持 v-model) | Position | ### V2DragZoomItem Slots | Slot | 说明 | |------|------| | default | 放置标记点或其他内容 | ## 🔧 开发 ```bash # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建 npm run build ``` ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request 来改进这个项目。 ## 📄 License MIT