✎修改上方代码,下方实时预览修改左侧代码,右侧实时更新
🧪原生 Pointer Events 实现股票拖拽排序
演示了什么:这个 Demo 让你亲眼看到不用 SortableJS 也能做移动端可用的拖拽排序。按住股票卡片移动时,列表会用占位块保留空间,并在越过相邻卡片中线后交换顺序。
关键实现:
startDrag 先插入 placeholder 再把卡片设为 position: fixed——这样拖拽项脱离文档流时,列表不会突然塌陷或跳动。getInsertBefore 使用“指针 Y 值是否越过卡片中线”判断插入点——比碰到边缘就换位更稳定,能减少上下抖动。.row{touch-action:none} 配合 moveDrag 里的 event.preventDefault()——移动端手指拖拽时不会触发页面滚动,交互更像原生 App。动手改一改:
.placeholder 背景色改深、虚线改实线——观察拖拽目标位置提示会变得更强。row.offsetHeight / 2 改成 / 3 或 * .8——感受换位触发点提前或延后的差异。