sortablejs 拖拽排序

SortableJS 对列表通过拖放 (drag-and-drop) 进行拖拽排序。它还提供了 Vue.Draggable 等比较成熟的包装组件。

https://github.com/SortableJS/Sortable

npm install sortablejs --S

可对任意父元素的子元素可拖动,如对表格的 tbody 元素,使其内部的 tr 可被拖动:

const tbody = document.querySelector('tbody')
new Sortable(example1, {});

通过 forceFallback: false 解除浏览器默认行为,即可成为受控组件,使用 v-model,否则浏览器默认行为总是有一种控制不住的感觉。

可通过 scrollSensitivity 调整滑动灵敏度,比如元素跨滚动条拖拽时总感觉拖不动,调高即可轻松拖拽。这个属性就是鼠标靠近边缘多远开始滚动,默认30。

内部的元素点击不了,点击和拖拽容易产生误判,此时要作用点击事件的子元素可以 event.stopPropagation() 来阻止冒泡,而实际被拖拽的子元素使用 handle 属性来设置 css 类,避免冲突。

通过 ghostClass 设置被拖拽后显示预览位置的的样式, dragClass 设置拖拽中样式。

拖拽的动画效果,可参照官方示例的动画效果。

本文收录于专栏
收集一些好用的前端开源库,主要是 npm 包