You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

拖拽排序时,其他行折叠状态下维持被拖拽行位置不偏移的问题

拖拽排序Accordion列表时的跳动问题及优化探讨

问题场景

我有一个支持拖拽排序的Accordion(可展开行)列表,为方便用户操作,拖拽时会自动折叠所有行。但目前存在体验问题:

  • 仅折叠选中行,或选中行下方的行处于展开状态时,拖拽操作一切正常;
  • 若选中行上方存在展开的行,拖拽时选中行会出现向上跳动的情况,用户体验不佳。

问题演示:
拖拽时折叠所有元素导致选中行跳动

临时尝试的解决方案

我查阅了dnd-kit的文档和配置选项,未找到现成解决方案,于是尝试了一个临时方案:给被拖拽项添加合适的顶部内边距,让被拖拽行上方的折叠面板贴近鼠标位置,保持按钮的视觉位置不变,效果如下:

添加顶部内边距后的优化效果

测试该方案可取消DraggableItem.tsx中以下代码的注释:

paddingTop: hideContent && index === 0 ? "168px" : undefined,

注:该临时方案仅在第1、2项展开时生效。

求助疑问

  1. 这个优化方向是否正确?
  2. 有没有更简便、规范的解决方法?
  3. 从用户体验(UX)角度考虑,是否仅隐藏被拖拽行的内容是更好的选择?
  4. 我也考虑过当有行展开时禁用拖拽,但这对UX和无障碍性都不友好,是否有更优的替代方案?

内容的提问来源于stack exchange,提问作者Shahin Dohan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 19:18:25