sortable.js 的研究

大哥们,请教一下,sortable.js 的研究
最新回答
安静的河

2024-10-17 20:40:54

Sortable 是一个用于现代浏览器和触摸设备上的拖放列表重新排序的JavaScript库,无需依赖 jQuery。它支持多种框架,如 Meteor,AngularJS,React,Polymer,Vue,Ember,Knockout 等,以及任何 CSS 库,例如 Bootstrap。其官网为 sortablejs.github.io,提供丰富的示例与文档。

Sortable 的核心功能在于实现列表元素间的拖放排序,通过设置两个列表相同的 group 值,可以实现元素在列表间的拖放。此外,您还可以定义列表是否允许放弃、克隆以及接收元素的副本。当需要在列表内重复拖拽同一项目时,只需设置 revertClone: true,即可实现只放置一次的效果。

通过 `pull` 和 `put` 方法,可以进一步扩展拖拽功能,让用户根据自己的需求判断项目放置位置。`sort` 选项用于控制列表元素是否可排序,`delay` 用于设置排序开始时间的毫秒单位,`swapThreshold` 确定交换区域的百分比。通过 `invertSwap` 可以实现“在项目之间”排序的效果,而 `direction` 则允许用户自定义排序的方向。

`touchStartThreshold` 用于在用户使用触摸设备(如移动设备)时设置排序延迟,避免误触发。`fallbackTolerance` 则用于在不支持 HTML5 的浏览器中模拟本地拖动阈值,确保在不同浏览器间的一致性。通过 `disabled` 可以禁用可排序功能,`handle` 选项允许用户定义拖动区域,避免文本选择。`filter` 和 `ghostClass` 用于控制项目的选择和背景显示效果,`chosenClass` 用于标记选中的项目。`forceFallback` 选项用于强制使用非 HTML5 浏览器的后备机制,`emptyInsertThreshold` 则用于控制拖动元素插入到空列表的条件。

Sortable 提供了丰富的事件对象和方法,如 `move`、`closest`、`toArray`、`sort`、`save`、`destroy` 等,允许开发者根据需求对列表进行操作。其中,`Sortable.create` 用于创建新的实例,`Sortable.active` 获取当前激活的实例,`Sortable.dragged` 和 `Sortable.ghost` 分别表示被拖动的元素和显示的占位符元素,`Sortable.clone` 则表示克隆元素。`Sortable.get` 用于获取特定元素的 Sortable 实例,`Sortable.mount` 则用于安装插件。

Sortable 配套的插件如 `OnSpill`、`RevertOnSpill` 和 `RemoveOnSpill` 可以帮助实现特定的交互行为,如溢出恢复、克隆删除等。此外,还有 `swap` 插件允许元素交换,而不是仅进行排序。自动滚屏插件则在移动设备和 IE9 上提供更好的滚动体验。`MultiDrag` 插件允许用户一次性选择并拖动多个项目,放置后按原始顺序展开。

Sortable 提供的配置选项丰富,能够灵活地适应不同场景下的需求,实现高效、自然的列表拖放交互。其强大的灵活性和广泛的兼容性,使其成为构建复杂交互界面时的有力工具。