黑白梦

一个 css 属性解决 codemirror 移动端滚动条触发网页下拉刷新问题

在移动设备使用 codemirror 编辑器时,如果编辑器内的代码内容比较长,必然会有滚动条。

当编辑器处于接近页面顶部的场景,比如代码编辑器,上面就一个切换语言之类的,很接近页面顶部,这种样式下无论是触屏,还是通过鼠标连接平板,滑动滚动条都可能出现一个不符合预期的行为:网页下拉刷新。

其实,这个问题通过一个 css 属性即可解决。

overscroll-behavior-y ,用于控制滚动到边界时的效果。详细用法可见: https://developer.mozilla.org/zh-CN/docs/Web/CSS/overscroll-behavior

在控制 codemirror 的 react 组件的 module.scss 样式文件中,只需要这样写即可:

.wrap {
  :global(.cm-scroller) {
    overscroll-behavior-y: contain;
  }
}

一旦代码行数超出高度产生滚动条,这时滑动再也不会触发上拉刷新了。