当前位置:首页 > VUE

vue实现列表拖拽

2026-02-20 03:36:12VUE

Vue 实现列表拖拽的方法

在 Vue 中实现列表拖拽功能,可以通过原生 HTML5 的拖放 API 或使用第三方库如 vuedraggable。以下是两种常见的方法:

使用 HTML5 拖放 API

HTML5 提供了原生的拖放 API,可以通过监听拖放事件实现列表拖拽功能。

<template>
  <div>
    <ul>
      <li 
        v-for="(item, index) in list" 
        :key="index"
        draggable="true"
        @dragstart="handleDragStart(index)"
        @dragover.prevent
        @drop="handleDrop(index)"
      >
        {{ item }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: ['Item 1', 'Item 2', 'Item 3', 'Item 4'],
      draggedIndex: null
    };
  },
  methods: {
    handleDragStart(index) {
      this.draggedIndex = index;
    },
    handleDrop(index) {
      const draggedItem = this.list[this.draggedIndex];
      this.list.splice(this.draggedIndex, 1);
      this.list.splice(index, 0, draggedItem);
    }
  }
};
</script>

使用 vuedraggable

vuedraggable 是一个基于 Sortable.js 的 Vue 拖拽库,使用起来更加简单高效。

安装依赖:

npm install vuedraggable

使用示例:

vue实现列表拖拽

<template>
  <div>
    <draggable v-model="list" @end="onDragEnd">
      <div v-for="(item, index) in list" :key="index">
        {{ item }}
      </div>
    </draggable>
  </div>
</template>

<script>
import draggable from 'vuedraggable';

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

注意事项

  • 使用 HTML5 拖放 API 时,需要手动处理拖拽逻辑,适合简单场景。
  • vuedraggable 提供了更多高级功能,如动画、拖拽手柄等,适合复杂场景。
  • 在移动端使用时,可能需要额外处理触摸事件。

两种方法均可实现列表拖拽功能,根据项目需求选择合适的方式。

标签: 拖拽列表
分享给朋友:

相关文章

vue实现影片列表

vue实现影片列表

Vue 实现影片列表 使用 Vue CLI 创建项目 确保已安装 Vue CLI,通过以下命令创建新项目: vue create movie-list cd movie-list 安装依赖 根据…

weex  vue 实现列表

weex vue 实现列表

weex + Vue 实现列表的方法 使用<list>和<cell>组件 在weex中,列表通常通过<list>和<cell>组件实现。<list…

vue实现列表页面

vue实现列表页面

Vue 列表页面实现方案 基础列表渲染 使用 v-for 指令渲染数组数据,配合 :key 提升性能: <template> <ul> <li v-for=…

vue实现树形拖拽

vue实现树形拖拽

Vue 实现树形拖拽的方法 使用 vue-draggable 插件 安装 vue-draggable 插件: npm install vuedraggable --save 在组件中引入并使用:…

vue实现滚动列表

vue实现滚动列表

Vue 实现滚动列表的方法 使用 CSS 实现基础滚动 通过 CSS 的 overflow 属性可以快速实现滚动效果。适用于静态列表或简单动态内容。 <template> <d…

vue如何实现列表

vue如何实现列表

使用 v-for 指令渲染列表 在 Vue 中,可以通过 v-for 指令动态渲染列表数据。v-for 需要特殊的语法形式 item in items,其中 items 是源数据数组,item 是数组…