百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

2025 年 10+ 前端顶级拖拽 JavaScript 库

suiw9 2025-02-20 17:49 12 浏览 0 评论

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。

今天给大家带来的主题是“10+ 前端顶级拖拽 JavaScript 库”,话不多说,直接进入正题!

React-Beautiful-DnD

React Beautiful DND 是一个漂亮且易于访问的拖放库,用于基于 React 构建的列表。 它提供了一组出色的拖放功能以及项目的自然移动,为用户提供自然而美观的拖放体验。

React Beautiful DND 支持更高级别的抽象,并且是为列表(垂直、水平、列表之间的移动、嵌套列表等)而构建。 此外,React Beautiful DnD 还支持多拖动功能,可以拖动多个项目,还可以在拖放过程中添加和删除项目。

React Beautiful DND 的典型特征包括:

  • 虚拟列表支持
  • 鼠标、键盘和触摸支持。
  • 屏幕阅读器
  • 有条件的拖/放、支持水平垂直滚动
  • 兼容服务器端渲染 (SSR)
  • 自定义拖动手柄
  • 高性能
  • 灵活的物品尺寸等等

目前 React-Beautiful-DnD 在 Github 通过 MIT 协议开源,有超过 31.3k 的 star、2.5k 的 fork、项目依赖量 100k 左右、代码贡献者 130+,妥妥的前端优质开源项目。

Sortable

Sortable 是一个开源 JavaScript 库,用于现代浏览器和触摸设备的可重新排序拖放列表, 不需要 jQuery 或框架。 此外,它支持多重拖动,允许用户选择列表中的多个项目,并将它们作为一个项目拖动到多个列表或同一列表中。

Sortable 支持许多高级功能,比如:交换阈值,用户可以在拖动并放置在不同位置时交换列表中的项目从而导致其他元素自行拖动。

此外,Sortable 是使用 Native HTML 5 Drag and Drop API 构建的,支持多种框架,如 Meteor、Angular、React、Knockout、Ember、Vue 等。

Sortable 的典型特征包括:

  • 支持触摸设备和现代浏览器(包括 IE9)
  • 可以从一个列表拖动到另一个列表或在同一列表内
  • 支持移动项目时的 CSS 动画
  • 支持拖动手柄和可选择文本(比 voidberg 的 html5sortable 更好)
  • 智能自动滚动、高级交换检测、流畅的动画、多拖动支持、支持 CSS 转换
  • 使用原生 HTML5 拖放 API 构建,支持:Meteor、Angular、React、Knockout、Polymer、Vue、Ember 等诸多前端框架。
  • 支持任何 CSS 库,例如: Bootstrap
  • 简单的 API、支持插件、CDN、不需要 jQuery(但有支持)等

目前 Sortable 在 Github 通过 MIT 协议开源,有超过 27.7k 的 star、3.7k 的 fork、妥妥的前端优质开源项目。

React DND

React DND 是一个终极库,拥有一组 React 实用程序,通过保持组件解耦来构建复杂的拖放界面,架构受到 Flux 和 Redux 等著名 React 库的启发。

此外,React DND 可以轻松地与任何组件配合使用,因为它包装了组件并将 props 注入其中,就像 React Router 和 Flummox 中遵循的相同模式一样。

React DND 的典型特征包括:

  • 单向数据流
  • 隐藏平台怪癖
  • 可扩展且可测试
  • 触摸支持 Hooks API 等等

目前 React DND 在 Github 通过 MIT 协议开源,有超过 19.9k 的 star、2k 的 fork、项目依赖量 200k 左右、代码贡献者 200+,妥妥的前端优质开源项目。

Draggable

Draggable 将本机浏览器事件抽象为综合 API,以创建自定义拖放体验。 Draggable 附带了附加模块,包括:Sortable、Droppable、Swappable。 Draggable 本身在拖动时不执行任何排序行为,但会执行繁重的工作,例如:创建镜像、发出事件、管理传感器事件、使元素可拖动。

附加模块构建在 Draggable 之上,因此提供了类似的 API 接口。Draggable 的特征包括:

  • 适用于本机拖动、鼠标、触摸和强制触摸事件
  • 可以通过 Hooks 到 draggables 事件生命周期来扩展拖动行为
  • 可以通过向可拖动添加传感器来扩展拖动检测
  • 该库针对 ES6

目前 Draggable 在 Github 通过 MIT 协议开源,有超过 17.1k 的 star、1.1k 的 fork、代码贡献者 50+,是值得关注的前端开源项目。

dropzone

Dropzone 是一个 JavaScript 库,可将任何 HTML 元素转换为 dropzone。 这意味着用户可以将文件拖放到其上,Dropzone 将显示文件预览和上传进度,并通过 XHR 为用户处理上传。

Dropzone 是完全可配置的,可以根据需求设计样式,并受到很多开发者的信赖。Dropzone 的典型特征包括:

  • 图像缩略图预览
  • 高 DPI 屏幕支持
  • 多个文件并同步上传
  • 进度更新
  • 支持 Amazon S3 分段上传
  • 浏览器图像调整大小等等

目前 Dropzone 在 Github 开源,有超过 17.6k 的 star、3.3k 的 fork、104k 的项目依赖量,代码贡献者 70+,是值得关注的前端开源项目。

react-grid-layout

React Grid Layout 是一个可拖动且可调整大小的网格布局库,可为 React 创建响应式网格布局。 此外,开发者可以像 Web 应用程序中的任何其他组件一样使用 React Grid Layout。

此外,React Grid Layout 还具有自动打包、可拖动和可调整大小的小部件、静态小部件、流体布局以及每个响应断点的单独布局。 开发者还可以使用上面的演示,在其中可以拖动一些框,调整它们的大小,然后调整窗口大小以查看响应断点。

React Grid Layout 的典型特征包括:

  • 100% React – 没有 jQuery
  • 可拖动的小部件
  • 可配置的包装:水平、垂直或关闭
  • 拖动和调整大小的边界检查
  • 布局可以序列化和恢复
  • 兼容等等

目前 React Grid Layout 在 Github 通过 MIT 协议开源,有超过 18.6k 的 star、2.5k 的 fork、项目依赖量 15.3k 左右、代码贡献者 130+,妥妥的前端优质开源项目。

interact.js

Interact.JS 是一个开源 JavaScript 拖放库,支持所有主流浏览器的调整大小和多点触控手势。 通过提供简单、灵活的 API 来完全控制库,该 API 提供移动元素所需的所有指针事件数据。

默认情况下,Interact.Js 不会为用户移动元素,而是为元素设置样式,以便在事件侦听器发生拖动时元素会移动。 此外,可以访问官方网站,在其中提到了一些带有代码的交互式示例。

Interact.JS 的典型特征包括:

  • 惯性和折断,多点触控、同步交互
  • 跨浏览器和设备,支持桌面版和移动版 Chrome、Firefox 和 Opera 以及 Internet Explorer 9+
  • 与 SVG 元素交互、独立且可定制
  • 除了更改光标之外不修改 DOM(但可以禁用)

目前 Interact.JS 在 Github 通过 MIT 协议开源,有超过 11.8k 的 star、0.8k 的 fork、项目依赖量 7.5k 左右、代码贡献者 50+,妥妥的前端优质开源项目。

Movable

Movable 是一个高级 JavaScript 库,除了拖放界面之外,它还可以添加许多高级功能。 因此,可以通过调整大小、环绕、捏合、分组等方式移动元素。

Movable 的典型特征包括:

  • 可拖动是指拖动和移动目标的能力、可调整大小指示目标的宽度和高度是否可以增加或减少。
  • Scalable 表示目标的 x 和 y 是否可以缩放变换、可旋转表示目标是否可以旋转。
  • Warpable 表示目标是否可以扭曲(扭曲、弯曲)。
  • Pinchable 表示目标是否可以捏合、可拖动、可调整大小、可缩放、可旋转。
  • Groupable 表示目标是否可以分组移动、可拖动、可调整大小、可缩放、可旋转。
  • Snapable 指示是否捕捉到参考线。
  • OriginDraggable* 表示是否拖动原点。
  • Clippable 表示是否对目标进行裁剪。
  • Roundable 表示是否显示拖拽或者双击 border-radius。
  • 支持 SVG 元素(svg、路径、直线、椭圆、g、矩形等)、支持主流浏览器、支持 3D 变换

目前 Movable 在 Github 通过 MIT 协议开源,有超过 8.7 k 的 star、0.7k 的 fork、项目依赖量 2.8k 左右、代码贡献者 40+,妥妥的前端优质开源项目。

Dragula

Dragula 是一个有用且简单的拖放 JavaScript (JS) 库,它提供了最简单的 API 来轻松在应用程序中部署拖放。 此外,默认情况下,它将允许用户拖动任何容器中的元素并将其放入列表中的任何其他容器中。

Dragula 的浏览器支持包括所有主流的浏览器和 IE7+, 1 框架支持包括普通 JavaScript、Angular 和 React。

目前 Dragula 在 Github 通过 MIT 协议开源,有超过 21.7 k 的 star、2k 的 fork、项目依赖量 21.8k 左右、代码贡献者 40+,妥妥的前端优质开源项目。

DFlex

DFlex 是一个用于现代拖放应用程序的 Javascript 库, 用 Vanilla Javascript 构建,并实现了增强的转换机制来操作 DOM 元素。 DFlex 是迄今为止 Web 上唯一操作 DOM 而不是重建它的拖拽库,并且拥有自己的调度程序和协调器

DFlex 的典型特征包括:

  • 使用元素移动机制来理解浏览器和 DOM 树,专注于高性能和易于实施,无需重新造轮子
  • 无限 DOM 转换,而不是在每次交互时重建 DOM 树。
  • 定制和增强的调节器仅针对从原始位置转换的元素。
  • 使用调度程序与数据流隔离可以防止任何阻塞事件
  • 防止任何拖放机制发生布局变化,而且每次交互都会有动画变换
  • DFlex 无头且不针对任何特定框架,每个修复、功能或增强都会影响所有框架实现。
  • 根据注册单独定位每个 DOM 元素,事件驱动和完全定制的 API。
  • 可使用自己的匹配算法而不是平面递归算法进行扩展
  • 支持三种不同类型的限制、四种类型的自定义事件和自定义布局状态发射器。

目前 DFlex 在 Github 通过 MIT 协议开源,有超过 1.7k 的 star,是一个值得关注的前端开源项目。

vue.draggable.next

Vue Draggable Next 是一个基于 Vue 的拖放组件,基于 Sortable 并与 Vue 3 兼容, 它允许拖放并与 Vuejs 项目中的视图模型数组同步。 此外,它还完全支持 Sortable.js 的功能。

该库没有 jQuery 依赖项,可以重用现有组件(例如 vuetify、element 或 vue Material 等),并使用 tag 和 componentData 属性使它们可拖动。

vue.draggable.next 的典型特征包括:

  • 支持触摸设备
  • 支持拖动手柄和可选择的文本
  • 智能自动滚动
  • 支持不同列表之间的拖放
  • 与 Vue.js 3.0 过渡组兼容
  • 取消支持等

目前 vue.draggable.next 在 Github 通过 MIT 协议开源,有超过 3.1k 的 star,是一个值得关注的前端开源项目。

DragSelect

DragSelect 是一个易于使用、没有任何依赖项的拖放 JavaScript 库。 DragSelect 支持 module.exports、具有 Define 的 AMD 模块、具有 .es6m 版本的 es6 模块,并且可以回退到全局命名空间以获得最大程度的开箱即用支持。

此外,DragSelect 使用修饰键进行多个独立选择,并且是超级可定制的,是最轻量级的库,zip 大小仅为 12.4 KB。

DragSelect 的典型特征包括:

  • 无任何依赖关系且完全开源
  • 在浏览器中复制操作系统的拖动选择
  • 辅助功能 (a11y)
  • 可通过键盘选择、拖放
  • 支持所有主流浏览器、支持 SVG
  • 支持移动(触摸交互)等等

目前 DragSelect 在 Github 通过 MIT 协议开源,有超过 0.7k 的 star,是一个值得关注的前端开源项目。

参考资料

https://github.com/atlassian/react-beautiful-dnd

https://github.com/a5hik/ng-sortable

https://themeselection.com/drag-and-drop-library/#h-ng-sortable

https://github.com/SortableJS/vue.draggable.next

https://github.com/bevacqua/dragula

https://github.com/daybrush/moveable

https://github.com/ThibaultJanBeyer/DragSelect

https://github.com/dflex-js/dflex#dflex

https://github.com/react-grid-layout/react-grid-layout

https://github.com/dropzone/dropzone

https://github.com/Shopify/draggable

https://github.com/react-dnd/react-dnd

https://github.com/atlassian/react-beautiful-dnd

https://github.com/SortableJS/Sortable

https://reactjsexample.com/a-drag-and-drop-file-input-built-using-react/#google_vignette

相关推荐

昆仑通态初级入门(昆仑通态选型)

1时间的显示方法1:1新建窗口2点击工具箱中插入元件图标,选择时钟,时钟1,然后确定...

案例分析:企业消息通知管理平台设计

企业消息需要通知及时又不过度打扰,如果经由专门的消息管理平台送达,这个平台在设计上应该注意什么问题?在企业日常运作中,一般有三种由企业发起的通知信息:重要且正式的新闻通知,比如领导任命通知、新颁布的行...

Windows CMD 命令大全:简单粗暴收藏!

WindowsCMD是Windows系统内置的命令行工具,用于执行各种命令和管理任务。以下是CMD的基础知识和常用命令。...

软网推荐:超强的免费文件重命名利器

Windows10的文件资源管理器虽然也具有批量文件重命名的功能,但由于无法满足人们对批量文件命名的多样化需求,因此往往还需要借助于第三方软件来解决问题。在众多的文件批量重命名工具中,Rename...

CAD最强插件,掌握此插件十分之一的功能,你就是绘图大师

推荐退出360杀毒软件再下载,插件会被误杀,导致不能安装。"源泉建筑与装饰设计CAD工具箱(简称:...

相见恨晚:windows十款必装的逆天神器

本文首发于什么值得买平台请关注本账号获取更多好文,作者:纵笔浮生【写在前面】今天给大家带来了十款轻量级的软件,虽然小,有的或许简陋,但是真的能解决很多痛点,真正碰到了就是一个解决问题的好助手。可能有点...

零基础Python自学教程9:Python中运算符的优先级和条件表达式

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础Python完全自学教程》今日分享的是第9课《Python中运算符的优先级和条件表达式》。本节课主要内容有:Python中运算符的优先级、Pyth...

想要字体图标设计师却给了SVG?没关系,自己转

本文为Varlet组件库源码主题阅读系列第三篇,读完本篇,你可以了解到如何将svg图标转换成字体图标文件,以及如何设计一个简洁的Vue图标组件。...

聊聊字符集编码与数据压缩(字符集和编码的区别)

1.字符集与编码字符集:表示多个字符的集合,如符号,序号、数字,其它等等。字符编码:把字符编码为指定集合中的某一对象,变成一种特定的字节或字节序列,在计算机中便于存储,传输。通常字符集都采用对应的编码...

对象存储方案大比拼--OSS、MinIO、Ceph、Apache Ozone 与 OpenIO

在当今数据驱动的时代,选择合适的对象存储方案对于企业和开发者来说至关重要。本文将对本地存储、阿里云OSS、MinIO、Ceph、ApacheOzone和OpenIO这几种常见的对象存储方案进...

技术篇:如何构建安全的Kafka集群(kafka集群创建topic)

Kafka是由LinkedIn设计的一个高吞吐量、分布式、基于发布订阅模式的消息系统,使用Scala编写,它以可水平扩展、可靠性、异步通信和高吞吐率等特性而被广泛使用。目前越来越多的开源分布式处理系统...

为何Kafka在2.8版本开始会“抛弃”Zookeeper?

一、Kafka简介在讲解为何Kafka在2.8版本开始会“抛弃”Zookeeper?之前,先来介绍一下kafka和Zookeeper在kafka中的作用?...

博主好贴心,为已有的 ambari 集群修改主机名

回复“资源”领取独家整理的学习资料!...

0727-6.3.0-在CDH上运行你的第一个Flink例子

文档编写目的ClouderaDataFlow(CDF)作为Cloudera一个独立的产品单元,围绕着实时数据采集,实时数据处理和实时数据分析有多个不同的功能模块,如下图所示:...

详细介绍一下Spring Boot中如何使用Hive?

Hive是一个基于Hadoop实现的数据仓库工具,提供了强大的SQL操作支持,可以用来实现大数据分析和处理。通过Hive与SpringBoot的集成可以更快更高效的实现数据的查询与处理,下面我们就来...

取消回复欢迎 发表评论: