[实验] 可排序项位于粘性容器内时,自动滚动失败
作者: heswell创建于 2025年7月5日更新于 2026年8月12日
标签bugexperimentaldomtriage:done
我想允许数据表中的列标头可拖动以重新排列列。我的 TableHeader 是列标头的直接容器,它使用 position sticky 将标头粘贴到表格的顶部。 useSortable 在这方面工作得很好,直到我遇到横向滚动。如果我将列标头拖动到 TableHeader 的末尾,AutoScroller 就不会水平滚动包含的表格。这是因为 `getScrollingAncestors` 中的 `isFixed` 检查,因为 AutoScroller 会沿着祖先节点树向上查找可滚动的容器。这将 position sticky 元素与 position fixed 元素相同对待,但这似乎不正确。 `fixed` 元素固定在视口中的某个位置。 `sticky` 元素粘贴到最近的可滚动容器。此外,它们可能只在一个方向粘贴 - 就像这里的 TableHeader 粘贴到其可滚动容器的顶部。这不应该阻止使用此可滚动容器进行水平滚动。 当遇到粘贴的 TableHeader 容器时,`isFixed` 检查返回 true,我们直接跳到 ownerDocument 作为滚动容器,而忽略了实际的可滚动容器。
内容来源: clauderic/dnd-kit