欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 前端常用拖拽组件库(vue3、react、vue2)

前端常用拖拽组件库(vue3、react、vue2)

2026/2/3 21:05:24 来源:https://blog.csdn.net/qq_43940789/article/details/148765621  浏览:    关键词:前端常用拖拽组件库(vue3、react、vue2)

文章目录

  • 横向对比表
  • ES Drager
    • Drager API
      • Drager 属性
      • Drager 事件
      • Drager 插槽
  • vue-draggable-plus
  • Grid-Layout-Plus
  • Fluid DnD
  • 其他推荐
  • 如何选择?
  • 注意事项

横向对比表

库名称框架支持核心功能学习曲线社区活跃度
ES DragerVue 3高级图形操作★★★★☆
vue-draggable-plusVue 3列表拖拽克隆排序★★★☆☆
Grid-Layout-PlusVue 3/React响应式网格★★★★☆
Fluid DnD跨框架动画交互★★★☆☆
vue-draggablevue2列表拖拽克隆排序★☆☆ ☆☆
vue-grid-layoutvue2响应式网格★☆☆ ☆☆

ES Drager

🌈 简介
ES Drager 是一个轻量级的拖拽组件库,支持 Vue 3,提供基础的拖拽功能和高度的自定义能力。

特点

  • 支持拖拽、缩放、旋转等操作。
  • 提供丰富的 API 和事件回调。
  • 网格拖拽缩放
  • 拖拽编辑器
  • 轻量级,性能优秀。

资源

  • 官网:https://vangleer.github.io/es-drager/#/basic
  • GitHub:https://github.com/vangleer/es-drager

在这里插入图片描述

ES Drager
DraggableResizableRotatableskewable

Drager API

Drager 属性

属性名说明类型默认
tagcomponent组件的is属性[string]div
type类型,rect, text, image[string]rect
width宽度[number]100
height高度[number]100
left横坐标偏移[number]0
top纵坐标偏移[number]0
angle旋转角度[number]0
skew倾斜角度[Array][0, 0]
color颜色[string]#3a7afe
resizable是否可缩放[boolean]true
rotatable是否可旋转[boolean]-
skewable v1.3.0是否可倾斜[boolean]-
boundary是否判断边界(最近定位父节点,考虑性能谨慎使用。只支持移动,缩放在v1.3后不支持)[boolean]-
disabled是否禁用[boolean]-
minWidth最小宽度[number]-
minHeight最小高度[number]-
maxWidth最大宽度[number]-
maxHeight最大高度[number]-
selected控制是否选中[boolean]-
checkCollision是否开启碰撞检测[boolean]-
snapToGrid开启网格[boolean]-
gridX网格X大小[number]50
gridY网格Y大小[number]50
snap开启吸附[boolean]-
snapThreshold吸附阈值[number]10
markline辅助线(可自定义)[boolean][Function]-
extraLines添加除了es-drager元素以外的对齐线,例如添加中心点对齐(可参考)[Function]
scaleRatio缩放比[number]1
disabledKeyEvent禁用方向键移动[boolean]-
border是否显示边框[boolean]true
aspectRatio宽高缩放比[number]-
equalProportion宽高等比缩放(该属性和aspectRatio互斥,同时使用会存在问题)[boolean]-
resizeList显示的缩放handle列表,top, bottom, left, right, top-left, top-right, bottom-left, bottom-right[string[]]-

Drager 事件

事件名说明类型
change位置、大小改变[Function](dragData) => void
drag拖拽中[Function](dragData) => void
drag-start拖拽开始[Function](dragData) => void
drag-end拖拽结束[Function](dragData) => void
resize缩放中[Function](dragData) => void
resize-start缩放开始[Function](dragData) => void
resize-end缩放结束[Function](dragData) => void
rotate旋转中[Function](dragData) => void
rotate-start旋转开始[Function](dragData) => void
rotate-end旋转结束[Function](dragData) => void
skew倾斜中[Function](dragData) => void
skew-start倾斜开始[Function](dragData) => void
skew-end倾斜结束[Function](dragData) => void
focus获取焦点/选中[Function](selected) => void
blur失去焦点/非选中[Function](selected) => void
  • dragData 类型
export type DragData = {width: numberheight: numberleft: numbertop: numberangle: numberskew: number[],
}

Drager 插槽

插槽名说明
default自定义默认内容
resize缩放handle
rotate旋转handle
skew倾斜handle

vue-draggable-plus

在这里插入图片描述

资源

  • 官网:https://vue-draggable-plus.pages.dev/
  • GitHub:https://github.com/vue-draggable-plus

📌 核心定位
专为 Vue 3 设计的列表拖拽排序解决方案,基于 Sortable.js 深度优化,适用于列表拖拽排序等场景。

特点

  • 支持列表拖拽排序。
  • 兼容 Vue 3 的 Composition API。
  • 配置灵活,易于集成。

🎯 典型场景

  • 任务看板(Kanban)
  • 表格行排序
  • 嵌套列表重组

🛠️ 技术特性

// 示例:基础用法
import { Draggable } from 'vue-draggable-plus'
<Draggable v-model="list"animation="150"handle=".handle"@end="onDragEnd"
/>

Grid-Layout-Plus

在这里插入图片描述

简介
Grid-Layout-Plus 是一个强大的网格布局拖拽库,适用于 Vue 3,支持动态调整布局和响应式设计。

特点

  • 支持网格拖拽和动态调整布局。
  • 提供丰富的布局配置选项。
  • 响应式设计,适配不同屏幕尺寸。

资源

  • 官网:https://grid-layout-plus.netlify.app/zh/
  • GitHub:https://github.com/qmhc/grid-layout-plus

Fluid DnD

简介
Fluid DnD 是一个流畅的拖拽库,支持 Vue 3,专注于提供自然的拖拽体验和动画效果。

特点

  • 提供流畅的拖拽动画。
  • 支持多种拖拽场景(列表、网格等)。
  • 易于配置和使用。

资源

  • 官网:https://fluid-dnd.netlify.app/vue/introduction/introduction/
  • GitHub:https://github.com/fluid-dnd

其他推荐

  1. SortableJS

    • 官网:https://sortablejs.github.io/Sortable/
    • GitHub:https://github.com/SortableJS/Sortable
    • 适用于原生 JavaScript 和多种框架的拖拽排序库。
  2. React DnD

    • 官网:https://react-dnd.github.io/react-dnd/
    • GitHub:https://github.com/react-dnd/react-dnd
    • 适用于 React 的拖拽库,功能强大且灵活。
  3. Draggable

    • 官网:https://shopify.github.io/draggable/
    • GitHub:https://github.com/Shopify/draggable
    • 提供多种拖拽交互模式,适合复杂场景。

如何选择?

  • Vue 3 项目:推荐 ES Drager、vue-draggable-plus 或 Grid-Layout-Plus。
  • Vue 2 项目:推荐 vue-draggable、vue-grid-layout 。
  • React 项目:推荐 React DnD。
  • 原生 JavaScript 项目:推荐 SortableJS 或 Draggable。
  • 需要网格布局:优先选择 Grid-Layout-Plus。
  • 需要流畅动画:优先选择 Fluid DnD。

注意事项

  1. 根据项目需求选择合适的库,避免过度依赖。
  2. 注意库的维护状态和社区支持情况。
  3. 测试性能,确保拖拽操作不会影响页面流畅度。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词