vue实现div拖拽

首先,你需要在Vue组件中添加一个div元素,并设置它的样式为可拖拽:

<div class="draggable" @mousedown="startDrag" @mouseup="stopDrag" @mousemove="drag">
  <!-- 内容 -->
</div>

然后,在Vue组件的methods中添加以下方法:

data() {
  return {
    dragging: false,
    x: 0,
    y: 0,
    startX: 0,
    startY: 0
  };
},
methods: {
  startDrag(event) {
    this.dragging = true;
    this.startX = event.clientX - this.x;
    this.startY = event.clientY - this.y;
  },
  stopDrag() {
    this.dragging = false;
  },
  drag(event) {
    if (this.dragging) {
      this.x = event.clientX - this.startX;
      this.y = event.clientY - this.startY;
    }
  }
}

最后,在CSS中添加以下样式

.draggable {
  position: absolute;
  left: 0;
  top: 0;
  cursor: move;
}

移动端:

对于移动端,需要使用触摸事件来实现拖拽功能。以下是在Vue 3中使用触摸事件实现移动端拖拽的代码示例:

<template>
  <div class="draggable" @touchstart="startDrag" @touchend="stopDrag" @touchmove="drag">
    <!-- 内容 -->
  </div>
</template>

<script>
export default {
  data() {
    return {
      dragging: false,
      x: 0,
      y: 0,
      startX: 0,
      startY: 0
    };
  },
  methods: {
    startDrag(event) {
      this.dragging = true;
      this.startX = event.touches[0].clientX - this.x;
      this.startY = event.touches[0].clientY - this.y;
    },
    stopDrag() {
      this.dragging = false;
    },
    drag(event) {
      if (this.dragging) {
        this.x = event.touches[0].clientX - this.startX;
        this.y = event.touches[0].clientY - this.startY;
      }
    }
  }
};
</script>

<style>
.draggable {
  position: absolute;
  left: 0;
  top: 0;
  cursor: move;
}
</style>

在移动端,我们使用@touchstart、@touchend和@touchmove事件监听器来代替桌面端的鼠标事件。在startDrag和drag方法中,我们使用event.touches[0].clientX和event.touches[0].clientY来获取触摸点的位置。

这样,你就可以在Vue 3中实现移动端的div拖拽功能了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值