当前位置:首页 > 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 库。

vue实现简单拖拽

  1. 安装 vuedraggable

    npm install vuedraggable
  2. 示例代码:

    vue实现简单拖拽

    
    <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; }

```

关键点:

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

选择建议

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

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

相关文章

jquery 拖拽

jquery 拖拽

jQuery 拖拽实现方法 使用 jQuery 实现拖拽功能可以通过多种方式完成,以下是常见的几种方法: 使用 jQuery UI 的拖拽功能 jQuery UI 提供了 draggable 方法,…

vue实现简单搜索

vue实现简单搜索

Vue 实现简单搜索功能 数据绑定与输入框 在 Vue 中实现搜索功能,通常使用 v-model 绑定输入框的值到数据属性。创建一个输入框用于用户输入搜索关键词: <template>…

js实现图片拖拽

js实现图片拖拽

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

Vue实现拖拽布局

Vue实现拖拽布局

Vue 实现拖拽布局的方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

vue实现拆分拖拽

vue实现拆分拖拽

Vue 实现拆分拖拽功能 拆分拖拽通常指将一个元素拆分为多个部分,并允许用户通过拖拽重新排列或组合这些部分。以下是实现这一功能的几种方法: 使用 Vue.Draggable 库 Vue.Dragga…

vue实现自由拖拽

vue实现自由拖拽

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