当前位置:首页 > VUE

vue实现拖拽的插件

2026-01-22 17:49:43VUE

vue-draggable

基于Sortable.js封装,适用于Vue 2/3的拖拽排序组件,支持列表、表格、跨容器拖拽。

安装

npm install vuedraggable

基本用法(Vue 3)

<template>
  <draggable 
    v-model="list" 
    item-key="id" 
    @end="onDragEnd">
    <template #item="{ element }">
      <div>{{ element.name }}</div>
    </template>
  </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('拖拽完成');
    }
  }
};
</script>

Vue.Draggable.Next

Vue 3专用版本,功能与vuedraggable类似,但针对Composition API优化。

安装

npm install vue-draggable-next

示例

<template>
  <draggable 
    v-model="items" 
    :group="{ name: 'shared' }">
    <div v-for="item in items" :key="item.id">
      {{ item.text }}
    </div>
  </draggable>
</template>

<script setup>
import { ref } from 'vue';
import draggable from 'vue-draggable-next';

const items = ref([
  { id: 1, text: 'A' },
  { id: 2, text: 'B' }
]);
</script>

interact.js集成

若需要更复杂的拖拽交互(如缩放、旋转),可直接集成interact.js

基础实现

<template>
  <div 
    ref="dragEl" 
    class="draggable-box">
    拖拽我
  </div>
</template>

<script>
import interact from 'interactjs';
export default {
  mounted() {
    interact(this.$refs.dragEl)
      .draggable({
        onmove: (event) => {
          const target = event.target;
          const x = (parseFloat(target.style.left) || 0) + event.dx;
          const y = (parseFloat(target.style.top) || 0) + event.dy;
          target.style.transform = `translate(${x}px, ${y}px)`;
        }
      });
  }
};
</script>

选择建议

  • 简单排序:优先使用vue-draggableVue.Draggable.Next
  • 跨框架兼容:Sortable.js原生支持React/Vue/Angular。
  • 复杂交互:选择interact.jsd3-drag

可通过事件监听(如@start@update)实现自定义逻辑,如限制拖拽区域、动态调整样式等。

vue实现拖拽的插件

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

相关文章

vue实现上移下移插件

vue实现上移下移插件

实现上移下移功能的 Vue 插件 在 Vue 中实现列表项的上移和下移功能,可以通过自定义指令或组件封装的方式完成。以下是两种常见实现方式: 基于数组操作的通用方法 通过操作数组索引实现元素位置交换…

vue 实现拖拽

vue 实现拖拽

Vue 实现拖拽功能 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性和相关事件实现拖拽功能。 <template> &…

vue拖拽实现方式

vue拖拽实现方式

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

vue实现carousel拖拽

vue实现carousel拖拽

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

idea制作css插件

idea制作css插件

使用IDEA制作CSS插件 在IntelliJ IDEA中制作CSS插件可以通过以下方法实现,主要涉及插件开发工具和流程。 准备开发环境 确保已安装IntelliJ IDEA Ultimate版本,…

vue实现皮肤插件

vue实现皮肤插件

实现思路 Vue实现皮肤插件通常通过动态切换CSS变量或类名实现。核心思路是将皮肤样式抽离为独立的CSS文件或变量,通过用户交互或配置切换不同的皮肤主题。 基础实现方案 定义皮肤变量 在全局CSS中…