在 Vue 项目中实现拖拽排序、布局编辑、看板交互等功能是非常常见的需求。我给你整理了目前社区中最常用、最实用的 Vue 拖拽相关插件,涵盖列表拖拽、网格布局、缩放组件、动画交互等多个场景。
📝 先总结对比
插件名 | 特点 | Vue 3 支持 | 推荐指数 | GitHub 链接 |
---|---|---|---|---|
vue-draggable-next | 拖拽排序、轻量封装 | ✅ | ⭐⭐⭐⭐⭐ | GitHub |
Vue.Draggable | 官方支持、功能全面 | ✅ | ⭐⭐⭐⭐ | GitHub |
SortableJS | 原生库,自由度高 | ✅ | ⭐⭐⭐ | GitHub |
vue-grid-layout | 拖拽网格布局,响应式 | ⚠️ 部分支持 | ⭐⭐⭐⭐ | GitHub |
vue-draggable-resizable | 拖拽 + 缩放,适合画布编辑器 | ✅ | ⭐⭐⭐⭐ | GitHub |
vue-smooth-dnd | 拖拽动画、嵌套列表 | ⚠️ 手动封装 | ⭐⭐⭐⭐ | GitHub |
@vueuse/motion | 拖拽 + 动画 + 物理效果 | ✅ | ⭐⭐⭐⭐ | GitHub |
vue3-dnd | 拖拽逻辑控制,灵活性高 | ✅ | ⭐⭐⭐ | GitHub |
dnd-kit | 高性能、复杂拖拽系统 | ⚠️ 手动封装 | ⭐⭐⭐⭐ | GitHub |
📦 一、列表拖拽排序类插件
1. vue-draggable-next(推荐 Vue 3)
- ✅ 基于 SortableJS 封装,Vue 3 官方推荐组件之一
- ✨ 支持拖拽排序、动画过渡、分组拖拽等
- 📦 NPM:www.npmjs.com/package/vue...
- 🧾 GitHub:github.com/anish2690/v...
- 📖 文档:anish2690.github.io/vue-draggab...
适合场景:Trello 式看板、表格排序、动态组件列表
2. Vue.Draggable(vue.draggable.next)
- ✅ SortableJS 官方 Vue 封装,支持 Vue 2 和 Vue 3
- 💡 功能全面,社区活跃,文档丰富
- 📦 NPM:www.npmjs.com/package/vue...
- 🧾 GitHub:github.com/SortableJS/...
- 📖 文档:sortablejs.github.io/vue.draggab...
适合场景:表单生成器、拖拽式菜单、列表排序
3. SortableJS(原生库)
- ⚙️ 功能强大,支持原生 JS 拖拽排序
- 🧩 可与 Vue 手动集成(适合自定义封装)
- 📦 NPM:www.npmjs.com/package/sor...
- 🧾 GitHub:github.com/SortableJS/...
- 📖 文档:sortablejs.github.io/Sortable/
适合场景:需要与其他框架或原生项目结合使用
🧩 二、拖拽布局 & 网格系统类插件
4. vue-grid-layout
- 🧱 类似 React Grid Layout,可构建响应式拖拽网格布局
- ✨ 支持缩放、拖拽、边界限制、持久化布局
- 📦 NPM:www.npmjs.com/package/vue...
- 🧾 GitHub:github.com/jbaysolutio...
- 📖 文档:jbaysolutions.github.io/vue-grid-la...
适合场景:仪表盘、组件可视化编辑器、后台布局系统
5. vue-draggable-resizable
- 🔲 可拖拽 + 可缩放的组件(类似 PPT 块)
- 🎯 支持边界限制、吸附、最小尺寸等
- 📦 NPM:www.npmjs.com/package/vue...
- 🧾 GitHub:github.com/mauricius/v...
- 📖 示例:mauricius.github.io/vue-draggab...
适合场景:画布编辑器、图形排版、可视化搭建平台
🎨 三、拖拽 + 动画交互插件
6. vue-smooth-dnd
- 🎬 拖拽带动画,体验类似 Trello
- 🔁 支持嵌套、分组、拖拽预览
- 📦 NPM:www.npmjs.com/package/vue...
- 🧾 GitHub:github.com/kutlugsahin...
- 📖 文档:kutlugsahin.github.io/smooth-dnd/
适合场景:任务看板、嵌套列表、拖拽分组
7. @vueuse/motion(VueUse Motion)
- ⚡ VueUse 出品,基于 Popmotion 实现
- 💫 支持拖拽、动画、物理效果(弹性、摩擦)
- 📦 NPM:www.npmjs.com/package/@vu...
- 🧾 GitHub:github.com/vueuse/moti...
- 📖 官网:motion.vueuse.org/
适合场景:组件拖拽动画、交互动效、页面动效增强
🔧 四、拖拽逻辑控制类插件
8. vue3-dnd
- 🧠 类似 React DnD 的实现方式,更关注拖拽逻辑和行为
- 🧩 支持拖拽源、放置目标、拖拽预览等
- 📦 NPM:www.npmjs.com/package/vue...
- 🧾 GitHub:github.com/hcg1023/vue...
适合场景:需要自定义拖拽行为、构建复杂交互逻辑的项目
9. dnd-kit(需手动封装)
- 🚀 React 生态中最强大的拖拽引擎之一,性能极佳
- 🧱 支持拖拽层级、碰撞检测、键盘操作等
- 🌐 官网:dndkit.com/
- 🧾 GitHub:github.com/clauderic/d...
适合场景:构建复杂拖拽系统,如流程图、画布编辑器(需自行封装为 Vue 组件)
✅ 使用建议
- 如果你是做「列表排序」或「看板类」:推荐使用 vue-draggable-next 或 vue.draggable
- 如果你是做「仪表盘布局」:推荐 vue-grid-layout
- 如果你是做「画布编辑器」:推荐 vue-draggable-resizable
- 如果你想要「高级拖拽交互 + 动画」:推荐 vue-smooth-dnd 或 VueUse Motion
- 如果你想「高度自定义拖拽逻辑」:推荐 vue3-dnd 或 dnd-kit