当前位置:首页 > 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 插件需要暴露一个 install 方法,该方法接收 V…

vue拖拽容器实现

vue拖拽容器实现

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

vue实现拖拽改变尺寸

vue实现拖拽改变尺寸

Vue 实现拖拽改变尺寸的方法 使用原生 HTML5 拖拽 API 通过监听 mousedown、mousemove 和 mouseup 事件实现拖拽改变尺寸。创建一个可拖拽的边界元素,调整目标元素的…

vue实现拖拽div

vue实现拖拽div

实现拖拽功能的基本思路 在Vue中实现拖拽功能可以通过HTML5的拖拽API或第三方库如vuedraggable来完成。以下是两种常见方法的详细说明: 使用HTML5拖拽API HTML5提供了原生…

uniapp插件收益

uniapp插件收益

uniapp插件收益来源 uniapp插件的收益主要来自开发者将插件发布到DCloud插件市场后的销售分成。开发者可以设置插件的价格,用户购买后,开发者获得相应收入。 插件定价策略 插件的定价根据…

uniapp市场插件

uniapp市场插件

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