当前位置:首页 > 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 插件系统实现 Vue 插件通常用于添加全局功能或扩展 Vue 的能力。以下是实现 Vue 插件系统的关键步骤: 插件基本结构 Vue 插件需要提供一个 install 方法,该方法接收 Vu…

uniapp市场插件

uniapp市场插件

uniapp市场插件概览 uniapp的插件市场(DCloud插件市场)提供了丰富的插件资源,涵盖UI组件、功能扩展、模板、原生插件等类别,帮助开发者快速实现复杂功能。以下是常见插件类型及推荐:…

利用vue实现拖拽

利用vue实现拖拽

使用 Vue 实现拖拽功能 原生 HTML5 拖拽 API Vue 可以结合 HTML5 的拖拽 API 实现基础拖拽功能。以下是一个简单示例: <template> <div…

vue实现预热插件

vue实现预热插件

Vue 预热插件实现方法 预热插件(Preheat Plugin)通常用于在 Vue 应用初始化前预加载数据或执行必要操作,提升用户体验。以下是实现方案: 插件基本结构 创建 preheat-plu…

vue实现插件化

vue实现插件化

Vue 插件化实现方法 Vue 插件化允许开发者扩展 Vue 的核心功能,通过封装可复用的逻辑或全局功能来提升开发效率。以下是实现 Vue 插件化的核心方法: 插件的基本结构 Vue 插件需要暴露一…

实现拖拽生成vue

实现拖拽生成vue

拖拽生成 Vue 组件的实现方法 使用可视化拖拽工具 推荐使用开源工具如 Vue Draggable 或 Vue Form Builder,它们提供可视化界面和预设组件库,支持通过拖拽生成 Vue 模…