vue mousedown 移动过程的拖拽目标图片
时间: 2024-02-18 08:59:44 浏览: 194
好的,针对这个问题,可以通过以下步骤实现:
1. 在 Vue 模板中,给需要拖拽的图片绑定 mousedown 事件,用于开始拖拽操作。
2. 在 mousedown 事件回调函数中,记录下鼠标当前的位置和图片的初始位置。
3. 给 document 对象绑定 mousemove 和 mouseup 事件,用于处理拖拽过程和结束拖拽操作。
4. 在 mousemove 事件回调函数中,计算出鼠标当前位置与初始位置的偏移量,并更新图片的位置。
5. 在 mouseup 事件回调函数中,解绑 mousemove 和 mouseup 事件,结束拖拽操作。
具体实现可以参考以下代码:
```html
<template>
<div>
<img
ref="img"
src="./img.png"
@mousedown="startDrag"
style="position: absolute; left: 0; top: 0"
/>
</div>
</template>
<script>
export default {
methods: {
startDrag(e) {
// 记录鼠标当前位置和图片初始位置
const startX = e.clientX
const startY = e.clientY
const img = this.$refs.img
const imgX = img.offsetLeft
const imgY = img.offsetTop
// 绑定 mousemove 和 mouseup 事件
document.addEventListener('mousemove', this.doDrag)
document.addEventListener('mouseup', this.endDrag)
// 记录拖拽过程中的偏移量
this.offsetX = startX - imgX
this.offsetY = startY - imgY
},
doDrag(e) {
const img = this.$refs.img
const left = e.clientX - this.offsetX
const top = e.clientY - this.offsetY
// 更新图片位置
img.style.left = left + 'px'
img.style.top = top + 'px'
},
endDrag() {
// 解绑 mousemove 和 mouseup 事件
document.removeEventListener('mousemove', this.doDrag)
document.removeEventListener('mouseup', this.endDrag)
}
}
}
</script>
```
以上代码实现了一个简单的图片拖拽功能。当鼠标按下图片时,会记录下鼠标当前位置和图片的初始位置,并绑定 mousemove 和 mouseup 事件。在 mousemove 事件回调函数中,计算出鼠标当前位置与初始位置的偏移量,并更新图片的位置。在 mouseup 事件回调函数中,解绑 mousemove 和 mouseup 事件,结束拖拽操作。
阅读全文