当前位置:首页 > VUE

vue实现简单拖拽

2026-01-17 14:01:21VUE

Vue 实现简单拖拽功能

在 Vue 中实现拖拽功能可以通过 HTML5 的拖放 API 或第三方库(如 vuedraggable)来完成。以下是两种常见的实现方式:

使用 HTML5 拖放 API

HTML5 提供了原生的拖放 API,结合 Vue 的事件绑定可以快速实现拖拽功能。

<template>
  <div>
    <!-- 拖拽源 -->
    <div 
      draggable="true" 
      @dragstart="handleDragStart"
      class="draggable-item"
    >
      拖拽元素
    </div>

    <!-- 放置目标 -->
    <div 
      @dragover.prevent
      @drop="handleDrop"
      class="drop-target"
    >
      放置区域
    </div>
  </div>
</template>

<script>
export default {
  methods: {
    handleDragStart(e) {
      // 设置拖拽数据
      e.dataTransfer.setData('text/plain', '拖拽数据');
    },
    handleDrop(e) {
      // 获取拖拽数据
      const data = e.dataTransfer.getData('text/plain');
      console.log('拖拽数据:', data);
    }
  }
};
</script>

<style>
.draggable-item {
  width: 100px;
  height: 100px;
  background: lightblue;
  cursor: move;
}

.drop-target {
  width: 200px;
  height: 200px;
  background: lightgray;
  margin-top: 20px;
}
</style>

关键点:

  • draggable="true" 标记元素为可拖拽。
  • @dragstart 事件在拖拽开始时触发,用于设置拖拽数据。
  • @dragover.prevent 阻止默认行为以允许放置。
  • @drop 事件在元素放置时触发,用于处理拖拽数据。

使用 vuedraggable

对于更复杂的拖拽需求(如列表排序),可以使用 vuedraggable 库。

  1. 安装 vuedraggable

    npm install vuedraggable
  2. 示例代码:

    
    <template>
    <div>
     <draggable 
       v-model="list" 
       @end="onDragEnd"
       class="list-container"
     >
       <div v-for="item in list" :key="item.id" class="list-item">
         {{ item.text }}
       </div>
     </draggable>
    </div>
    </template>
import draggable from 'vuedraggable';

export default { components: { draggable }, data() { return { list: [ { id: 1, text: '项目 1' }, { id: 2, text: '项目 2' }, { id: 3, text: '项目 3' } ] }; }, methods: { onDragEnd() { console.log('拖拽后的列表:', this.list); } } };

.list-container { width: 200px; }

.list-item { padding: 10px; margin: 5px; background: lightgreen; cursor: move; }

```

关键点:

vue实现简单拖拽

  • v-model 绑定列表数据,拖拽后自动更新。
  • @end 事件在拖拽结束时触发,可用于监听变化。
  • vuedraggable 支持更多高级功能(如动画、跨列表拖拽等)。

选择建议

  • 简单拖拽:使用 HTML5 原生 API。
  • 复杂场景(如列表排序、嵌套拖拽):优先选择 vuedraggable

标签: 拖拽简单
分享给朋友:

相关文章

vue内实现拖拽

vue内实现拖拽

Vue 实现拖拽功能的方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性和相关事件实现拖拽功能。 <template>…

vue 实现拖拽甘特图

vue 实现拖拽甘特图

实现拖拽甘特图的核心思路 Vue 实现拖拽甘特图需要结合第三方库或自定义逻辑,核心功能包括任务条渲染、时间轴刻度、拖拽交互、数据绑定等。以下是具体实现方法: 使用第三方库(推荐) vue-gantt…

vue实现carousel拖拽

vue实现carousel拖拽

实现拖拽轮播的基本思路 在Vue中实现可拖拽的Carousel组件需要结合触摸事件(touchstart、touchmove、touchend)和鼠标事件(mousedown、mousemove、mo…

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…

vue实现div拖拽

vue实现div拖拽

Vue 实现 Div 拖拽的方法 使用原生 HTML5 拖拽 API 在 Vue 中可以通过 HTML5 的拖拽 API 实现基础拖拽功能。需要为元素添加 draggable 属性,并监听 drags…

js实现图片拖拽

js实现图片拖拽

实现图片拖拽的基本步骤 HTML 结构需要包含可拖拽的图片元素,并设置 draggable 属性为 true: <img id="dragImage" src="image.jpg" drag…