Web开发:优化 macOS 的触底弹性滚动和双指手势导航体验

一、触底弹性滚动

在 macOS 的滚动容器中,默认启用了所谓的“触底反弹”效果,也就是大家常说的“橡皮筋”效果。

这种效果通常能帮助用户直观地感知到滚动边界的到达,从而让整个滚动过程更加流畅,提升了用户体验。然而,当页面包含固定定位(fixed)的元素时,这一效果可能会造成视觉上的不协调。

解决这个问题非常简单,只需要一行 CSS 代码即可实现。例如,为 <body> 标签添加如下样式:

body{
  overscroll-behavior: none;
}

这样就能有效避免滚动至页面边缘时出现的视觉不适感。

二、双指导航手势

设想一下,当你花费大量时间填写表单后,由于不小心触发了返回操作导致数据丢失,这无疑是非常令人沮丧的。除了确保网站能够及时保存用户输入的数据外,在一些关键页面上通过阻止此类行为来保护用户的工作也非常重要。同样,我们可以通过设置 overscroll-behavior 属性来达到目的:

body{
  overscroll-behavior: none;
}

此属性可以防止浏览器响应导航手势,从而减少误操作的风险。

如果设计者希望保留弹性滚动的效果,但又想避免误触发导航手势,可以使用以下设置:

body{
  overscroll-behavior: contain;
}

三、overscroll-behavior属性详解

  • 关键字值:
    • overscroll-behavior: auto; (默认)
    • overscroll-behavior: contain;
    • overscroll-behavior: none;
  • 复合值:
    • overscroll-behavior: auto contain;


默认情况下,移动设备上的浏览器在滚动到页面顶部或底部时,会启用一种“触底”效果,有时还会刷新页面。有时候,这种行为并不符合我们的需求,比如在对话框中有可滚动内容时,一旦滚动到对话框的边界,其下方的页面内容也会开始滚动,这就是所谓的“滚动链”。通过 overscroll-behavior 属性,我们可以控制并消除这些不必要的滚动行为,就像在某些应用中禁用下拉刷新功能一样。

发表回复