Chrome的隐藏CSS滚动快照阈值以及如何更改阈值

r0s*_*kar 17 css scroll google-chrome

我有一个容器:

scroll-snap-points-y: repeat(100%);
snap-type: mandatory;
snap-type: y mandatory;
Run Code Online (Sandbox Code Playgroud)

还有三个孩子:

height: 100%;
scroll-snap-align: center;
scroll-snap-stop: always;
Run Code Online (Sandbox Code Playgroud)

在Firefox中,该功能的运行与预期的一样,但在Chrome中似乎存在一个阈值。仅滚动少量内容时,Chrome会回到第一个孩子,而Firefox将滚动到下一个孩子。仅在滚动大约子高度的30%之后,Chrome才会捕捉到下一个高度。

此行为可以在此代码笔中看到。

有什么方法可以禁用此隐藏阈值并使Chrome立即滚动到下一个孩子吗?

Bry*_*son 6

基于 Chromium Bugs 的scroll-snap一般讨论,其意图似乎是确定动量(滚动很难,滑动稍微容易一些),但实现有点不稳定。

建议是利用scroll-snap-stop: always来覆盖那个动量意图(你已经完成了)。但是,它也提到了这一点,scroll-margin并且scroll-padding可能会影响从一个捕捉点到下一个捕捉点的移动。

来自 Chrome Dev 的 CSS Snap Scrolling

您可能还想将Overscroll-behavior APIsnap-scroll.


jay*_*yms 2

我想,您可以暂时删除scroll-snap-alignon:hover以使其进入下一个/上一个:

#carousel.snap > div:hover {
  scroll-snap-align:initial;
}
Run Code Online (Sandbox Code Playgroud)

https://codepen.io/anon/pen/BXwYPa