铬';s隐藏CSS滚动捕捉阈值以及如何更改它
我有一个容器:铬';s隐藏CSS滚动捕捉阈值以及如何更改它,css,google-chrome,scroll,Css,Google Chrome,Scroll,我有一个容器: scroll-snap-points-y: repeat(100%); snap-type: mandatory; snap-type: y mandatory; 和三个孩子: height: 100%; scroll-snap-align: center; scroll-snap-stop: always; 这和Firefox中的预期一样有效,但在Chrome中似乎有一个阈值。当只滚动一小部分时,Chrome将返回到第一个子项,而Firefox将滚动到下一个子项。只有在滚动
scroll-snap-points-y: repeat(100%);
snap-type: mandatory;
snap-type: y mandatory;
和三个孩子:
height: 100%;
scroll-snap-align: center;
scroll-snap-stop: always;
这和Firefox中的预期一样有效,但在Chrome中似乎有一个阈值。当只滚动一小部分时,Chrome将返回到第一个子项,而Firefox将滚动到下一个子项。只有在滚动大约30%的子高度后,Chrome才会捕捉到下一个
这种行为可以在中看到
有没有办法禁用此隐藏阈值并让Chrome立即滚动到下一个子项?您可以临时删除
上的滚动对齐:悬停
使其进入下一个/上一个,我想:
#carousel.snap > div:hover {
scroll-snap-align:initial;
}
根据有关滚动捕捉的Chromium Bugs讨论,总体而言,目的似乎是确定动量(滚动很难,滑动稍微容易),但实现有点不可靠
建议使用scroll snap stop:always
来覆盖动量意图(您已经完成了)。但是,它还提到滚动边距
和滚动填充
可能会影响从一个捕捉点到下一个捕捉点的移动
您可能还想结合snap scroll
查看,在(桌面)Linux上使用75.0.3770.100时,您描述的阈值似乎接近50%
我发现,如果我将两个元素之间的中点滚动到视口正中间之前,旧元素会反弹,而如果我将中点移动到视口正中间之后,新元素会滚动到视图中。因此,阈值似乎是50%
这种行为可能与以下因素显著相关:
:
我不确定
我发现上面搜索的是快照滚动
;此查询的大多数结果由HTML文件和测试模拟组成
我发现的另外两个相关的结果是
我也这么想!刚刚发现Chrome的滚动阈值非常糟糕。它在Firefox甚至Android上的Chrome上都非常流畅。。。但在桌面上,使用高度100%或100VH的CSS滚动快照实现似乎是失败的。讽刺的是,在macOS上,这似乎恰恰相反。当使用轨迹板时,Chrome感觉平滑,阈值很低,而Firefox的阈值似乎非常高,有时甚至在我尝试向上滚动时向下滚动。当使用鼠标时,Chrome似乎完全禁用了捕捉功能,而Firefox只是在面板之间来回跳跃,没有任何转换。macOS 10.12.6、Firefox 67.0.4、Chrome 76.0.3809.36。与Chrome相同,@Ole。过去几天我所有的尝试都是徒劳的。我尝试过各种版本的“如果用户滚动了一点,但什么也没发生,请为他们滚动快照”,但在触摸设备上很快就会变得不可靠。我已经尝试在scroll snap polyfill上全力以赴,但在触摸设备上也变得不可靠。目前,我想知道我是否会尝试为Chrome打开一张罚单,和/或使用用户代理实现一个肮脏的黑名单…在我的应用程序上有很多与滚动快照相关的检查-是的-现在很完美!
// If snapping in one axis pushes off-screen the other snap area, this snap
// position is invalid. https://drafts.csswg.org/css-scroll-snap-1/#snap-scope
// In this case, we choose the axis whose snap area is closer, and find a
// mutual visible snap area on the other axis.