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

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

相关文章

实现简单vue

实现简单vue

实现一个简单的 Vue.js 框架 Vue.js 的核心功能包括数据绑定、响应式系统和虚拟 DOM。以下是一个简化版的 Vue 实现,涵盖基本功能。 数据响应式系统 使用 Object.define…

vue拖拽实现方式

vue拖拽实现方式

Vue拖拽实现方式 使用HTML5原生拖拽API HTML5提供了原生的拖拽API,可以通过draggable属性、dragstart、dragend、dragover和drop等事件实现基础拖拽功能…

vue 中实现拖拽

vue 中实现拖拽

Vue 中实现拖拽功能 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 drop…

vue实现carousel拖拽

vue实现carousel拖拽

Vue实现Carousel拖拽功能 实现一个支持拖拽的Carousel组件可以通过结合Vue的响应式特性和原生DOM事件来实现。以下是具体实现方法: 基础Carousel结构 创建一个基础的Car…

vue 实现拖拽

vue 实现拖拽

Vue 实现拖拽功能的方法 在 Vue 中实现拖拽功能可以通过多种方式完成,以下是几种常见的实现方法: 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 dragg…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document…