【发布时间】:2018-01-30 08:29:02
【问题描述】:
我正在处理一个页脚元素“粘贴”到页面底部的页面(使用旧的position: fixed 以实现兼容性),直到用户向下滚动足够远以使其成为position: static。
但是,当fixed 变为static 时,chrome 会将父 div 滚动回顶部。
我做了一个codepen来说明。
https://codepen.io/Sulsay/pen/eVmmNZ
- 将其拖动到足够小以显示滚动条;
- 向下滚动;
- 当紫色条变为全角 (
position: fixed) 时,您会注意到 Chrome 会自动将#contentdiv(带有overflow: auto)滚动回顶部。
我已将笔缩减为仅包含网格布局和#content div 上的overflow: auto。 Chrome 似乎不喜欢这种组合。删除 overflow: auto 消除了滚动问题,但也会导致标题和侧边栏滚动,这是我不想要的。
其他浏览器显示预期的行为,即保持滚动位置而不是跳回顶部。
这是 Chrome 特有的,并且可能是一个错误吗?还是我错过了什么?我搜索了 SO 和 chrome bug tracker,但令我惊讶的是,什么也没找到。
【问题讨论】:
-
我也遇到了这个问题。我的情况略有不同,但我有相同的
display:grid包装器和overflow:auto孩子。就我而言,我没有任何position:fixed,但是当我通过 javascript (React) 更新可滚动 div 的内容时,它会滚动回顶部。也许任何时候 div 重新流动都会发生这种情况?对我来说,这似乎是一个 Chrome 错误。相同的代码在 Firefox 中运行良好。
标签: css google-chrome overflow grid-layout