“可取消的” 平滑滚动

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。从 免费的 200 美元信用额度开始!

情况是这样的:您的网站提供了一个“滚动回顶部”按钮,并且您已经实现了平滑滚动。当页面滚动回顶部时,用户会看到一些吸引他们眼球的东西,他们想停止滚动,因此他们会使用鼠标滚轮、触控板或其他任何东西进行一点滚动。这就是我所说的“可取消的”。在没有进一步操作的情况下,滚动事件会到达目标位置。可取消意味着您可以通过后续滚动来停止它。我发现可取消的行为是更好的 UX,尽管我没有数据来支持这一点。

我发现浏览器之间存在一些差异,以及 CSS 和 JavaScript 在这方面的工作方式也存在差异。

在这个演示中向下滚动,试一试

这是我在可以轻松访问的浏览器上遇到的情况

CSS 平滑滚动JavaScript 平滑滚动
Chrome可取消的(速度:有点慢)不可取消的
Firefox可取消的(速度:非常快!)可取消的(速度:快!)
Safari没有平滑滚动没有平滑滚动
Edge可取消的(速度:快)不可取消的
iOS没有平滑滚动没有平滑滚动

如果由我决定,我会

  • 使通过 CSS 或 JavaScript 触发的平滑滚动操作可取消。
  • 定义“可取消的”,因为它不是一个恰当的词。也许是“中断的”?或者“可控的”?欢迎提出想法!
  • 使速度可控,或者如果没有,尝试让浏览器就中等速度达成一致(无论滚动距离如何,该速度始终保持一致)。
  • 让 Safari 支持它。平滑滚动使像 没有 JavaScript 的轮播 这样的功能非常实用,这一点很棒,尤其是在移动设备上,因为 iOS Safari 是 Apple 设备上的强制性浏览器。