Drag and drop list 拖拽排序列表

/DRAG und DROP LIST/ · noun · 操作类模式 · #135

可以拖动来调整顺序的列表:按住条目(通常是那个六个点的拖动手柄 ⋮⋮)拖动时,其他条目会让开,露出它将落下的位置,松手就放到那里。待办清单、播放列表、表单搭建器,以及菜单或标签页顺序的设置都常用它。它还需要键盘或按钮的替代方式,因为不是每个人都能拖动。

Drag and drop list(拖拽排序列表) UI 模式示例:CatchUI 图鉴标本

别名:拖拽排序、拖动排序。

你可能会这样叫它

  • “可以拖动排序的列表”
  • “每行上那六个点”
  • “拖动手柄”
  • “按住拖动调整顺序”

……它的名字是 拖拽排序列表(Drag and drop list)。

常见问题

拖动排序后端怎么存储?

常见做法是给每条记录存一个排序字段。拖动后只改被移动的那一条,把它的值设成前后两条之间的数,比如 1000 和 2000 之间放 1500;用小数或可排序的字符串(如 LexoRank)就不用每次重写整张表。数据量小时,也可以直接保存一个按顺序排好的 ID 数组。

代码里叫什么

SwiftUI.onMove(perform:) EditButton
UIKittableView(_:moveRowAt:to:) dragInteractionEnabled
Jetpack ComposeModifier.animateItem() 没有内置的可排序列表:Reorderable 等库给 LazyColumn 加上拖动排序
FlutterReorderableListView ReorderableDragStartListener
Web (HTML)draggable="true" dragstart drop
Web librariesSortableJS @dnd-kit/react/sortable

复制给 AI 编程工具

让这个列表可以拖动排序:每行开头放一个六点拖动手柄(只有按住它才开始拖动,滚动和点按照常工作);被拖的那行呈“拿起”效果,目标位置让出空位,拖到边缘时自动滚动。每行还要有“上移”“下移”操作或菜单,用读屏软件播报新位置;每次放下后保存顺序,保存失败时恢复原样并提示。

用 AI 写界面时该怎么说:UI 用词指南(英文)→

相关模式

其他常见图标叫什么(英文)→

传一张截图,抓住这个模式 →

学会从视觉线索认出 UI 模式(英文)