vue2使用hammer.js实现移动端div拖拽放大缩小旋转
时间: 2023-09-08 17:01:25 浏览: 283
在Vue2中使用Hammer.js实现移动端div的拖拽、放大缩小和旋转可以按照以下步骤进行。
首先,在Vue项目中安装Hammer.js。
```
npm install hammerjs
```
然后,在需要使用拖拽、放大缩小和旋转功能的组件中引入Hammer.js,并初始化一个Hammer实例,将其绑定到要拖拽、放大缩小和旋转的div元素上。
```
import Hammer from 'hammerjs'
export default {
mounted() {
const element = this.$refs.element // 获取div元素的引用
const mc = new Hammer.Manager(element) // 初始化Hammer实例并将其绑定到div元素上
// 添加拖拽、放大缩小和旋转的手势识别
mc.add(new Hammer.Pan({ threshold: 0, pointers: 0 }))
mc.add(new Hammer.Pinch({ threshold: 0 })).recognizeWith(mc.get('pan'))
mc.add(new Hammer.Rotate({ threshold: 0 })).recognizeWith(mc.get('pan'))
// 初始化div元素的拖拽、放大缩小和旋转的初始状态值
let posX = 0
let posY = 0
let scale = 1
let lastScale = 1
let rotation = 0
// 监听拖拽事件
mc.on('pan', (e) => {
// 实现拖拽
posX = e.deltaX
posY = e.deltaY
element.style.transform = `translate(${posX}px, ${posY}px) scale(${scale}) rotate(${rotation}deg)`
})
// 监听放大缩小事件
mc.on('pinch', (e) => {
// 实现放大缩小
scale = lastScale * e.scale
element.style.transform = `translate(${posX}px, ${posY}px) scale(${scale}) rotate(${rotation}deg)`
})
// 监听旋转事件
mc.on('rotate', (e) => {
// 实现旋转
rotation = e.rotation
element.style.transform = `translate(${posX}px, ${posY}px) scale(${scale}) rotate(${rotation}deg)`
})
}
}
```
最后,在该组件的模板中添加一个div元素,并给其添加初始样式。
```
<template>
<div ref="element" style="width: 200px; height: 200px; background-color: red;"></div>
</template>
```
这样,当你在移动端上访问这个页面时,就可以拖拽、放大缩小和旋转这个div元素了。
阅读全文