当前位置:首页 > VUE

vue使用插件实现拖拽

2026-01-22 02:26:04VUE

安装拖拽插件

推荐使用vuedraggable插件,它是基于Sortable.js的Vue组件,支持拖拽排序功能。通过npm或yarn安装:

npm install vuedraggable --save
# 或
yarn add vuedraggable

基础用法示例

在Vue组件中引入并注册vuedraggable,通过v-model绑定数据实现列表拖拽排序:

vue使用插件实现拖拽

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

<script>
import draggable from 'vuedraggable';
export default {
  components: { draggable },
  data() {
    return {
      list: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' }
      ]
    };
  },
  methods: {
    onDragEnd() {
      console.log('排序后的列表:', this.list);
    }
  }
};
</script>

跨列表拖拽

通过group属性实现不同列表间的元素转移:

<template>
  <div class="container">
    <draggable 
      v-model="listA" 
      group="shared" 
      @add="logChange">
      <!-- 列表A内容 -->
    </draggable>
    <draggable 
      v-model="listB" 
      group="shared">
      <!-- 列表B内容 -->
    </draggable>
  </div>
</template>

自定义拖拽手柄

通过handle属性指定拖拽触发区域,避免整个元素可拖拽:

vue使用插件实现拖拽

<draggable v-model="list" handle=".handle">
  <div v-for="item in list" :key="item.id">
    <span class="handle">≡</span>
    {{ item.name }}
  </div>
</draggable>

禁用拖拽功能

通过disabled属性动态控制拖拽状态:

<draggable v-model="list" :disabled="isLocked">
  <!-- 列表内容 -->
</draggable>

动画效果

添加animation属性改善视觉体验,例如设置animation: 150表示150毫秒的过渡动画:

<draggable v-model="list" :animation="150">
  <!-- 列表内容 -->
</draggable>

注意事项

  1. 数据绑定需使用v-model而非:list(旧版本语法)
  2. 跨组件通信时建议使用Vuex管理共享状态
  3. 移动端需添加CSS样式touch-action: none解决触摸冲突
  4. 复杂场景可结合clonepull属性控制拖拽行为

标签: 插件拖拽
分享给朋友:

相关文章

vue 实现卡片拖拽

vue 实现卡片拖拽

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

vue拖拽容器实现

vue拖拽容器实现

实现 Vue 拖拽容器的基本方法 使用 HTML5 原生拖拽 API 通过 draggable 属性和拖拽事件(dragstart、dragend、dragover、drop)实现基础拖拽功能。适用于…

vue实现拖拽

vue实现拖拽

Vue 实现拖拽功能的方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性和相关事件实现拖拽功能。在 Vue 中可以通过绑定这些事件来实现…

vue实现拖拽实现布局

vue实现拖拽实现布局

Vue 实现拖拽布局的方法 使用 Vue.Draggable 库 Vue.Draggable 是基于 Sortable.js 的 Vue 组件,适合实现列表或网格的拖拽排序。 安装依赖: np…

vue拖拽容器实现

vue拖拽容器实现

Vue 拖拽容器实现方法 在 Vue 中实现拖拽容器功能可以通过原生 HTML5 的拖放 API 或第三方库如 vuedraggable 来实现。以下是两种方法的详细说明。 使用 HTML5 拖放…

vue 实现拖拽甘特图

vue 实现拖拽甘特图

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