当前位置:首页 > VUE

vue 中实现拖拽

2026-03-08 04:06:39VUE

Vue 中实现拖拽的方法

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

使用 HTML5 拖拽 API

HTML5 提供了原生的拖拽 API,可以通过 draggable 属性和相关事件(如 dragstartdragenddragoverdrop)实现拖拽功能。

vue 中实现拖拽

<template>
  <div>
    <div 
      draggable="true"
      @dragstart="handleDragStart"
      @dragend="handleDragEnd"
    >
      拖拽元素
    </div>
    <div 
      @dragover.prevent
      @drop="handleDrop"
    >
      放置区域
    </div>
  </div>
</template>

<script>
export default {
  methods: {
    handleDragStart(event) {
      event.dataTransfer.setData('text/plain', '拖拽数据');
    },
    handleDragEnd() {
      console.log('拖拽结束');
    },
    handleDrop(event) {
      const data = event.dataTransfer.getData('text/plain');
      console.log('放置数据:', data);
    }
  }
};
</script>

使用 vuedraggable

vuedraggable 是一个基于 Sortable.js 的 Vue 拖拽组件,适合实现列表拖拽排序等功能。

vue 中实现拖拽

安装:

npm install vuedraggable

使用示例:

<template>
  <div>
    <draggable 
      v-model="list"
      @end="onDragEnd"
    >
      <div v-for="item in list" :key="item.id">
        {{ item.name }}
      </div>
    </draggable>
  </div>
</template>

<script>
import draggable from 'vuedraggable';

export default {
  components: { draggable },
  data() {
    return {
      list: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' },
        { id: 3, name: 'Item 3' }
      ]
    };
  },
  methods: {
    onDragEnd() {
      console.log('拖拽完成后的列表:', this.list);
    }
  }
};
</script>

注意事项

  • 使用 HTML5 拖拽 API 时,需要在 dragover 事件中调用 event.preventDefault() 以允许放置。
  • vuedraggable 支持更多高级功能,如分组、动画等,适合复杂场景。
  • 移动端可能需要额外处理触摸事件。

标签: 拖拽vue
分享给朋友:

相关文章

vue实现滚动中断

vue实现滚动中断

Vue 实现滚动中断的方法 在 Vue 中实现滚动中断通常涉及监听滚动事件,并在特定条件下阻止默认行为或停止滚动。以下是几种常见方法: 监听滚动事件并阻止默认行为 通过 @scroll 或 @whe…

vue实现选中单元格

vue实现选中单元格

Vue 实现选中单元格的方法 基础实现思路 在 Vue 中实现选中单元格功能,通常可以通过动态绑定 class 或 style 来实现。以下是一个基于表格的简单实现示例: <template&…

vue实现画圆弧并着色

vue实现画圆弧并着色

在 Vue 中实现画圆弧并着色 使用 Canvas API 绘制圆弧 在 Vue 组件的 mounted 钩子中,通过 Canvas API 绘制圆弧。创建一个 canvas 元素并获取其上下文:…

vue实现视窗

vue实现视窗

Vue 实现视窗功能 在 Vue 中实现视窗功能通常涉及监听浏览器窗口大小变化、响应式布局或创建自定义弹窗组件。以下是几种常见实现方式: 监听浏览器窗口大小变化 使用 Vue 的 mounted 和…

vue评分实现

vue评分实现

Vue 评分组件实现方法 使用第三方库(如 Element UI) 安装 Element UI: npm install element-ui 引入并注册组件: import Vue from '…

vue菜单实现

vue菜单实现

Vue 菜单实现方法 使用 Element UI 的菜单组件 Element UI 提供了现成的菜单组件,适合快速实现导航菜单。安装 Element UI 后,可以直接使用 el-menu 相关组件。…