问题描述:
scroll-view,里面的自定义组件中包含一个fixed弹框,但这个弹框无论怎么设置层级,只能显示在当前scroll-view的有效宽度内。安卓、开发工具都正常。ios不行。

原因:
因为 iOS 下加了 -webkit-overflow-scrolling: touch,这个会产生滚动惯性,体验更好,但会改变 fixed 的行为,建议不在 scroll-view 里有 fixed 元素

解决:
将scroll-view标签改为view,并设置样式:

  overflow-x: hidden;
  overflow-y: scroll;
  -webkit-overflow-scrolling: auto !important; // 禁用iOS滑动惯性
  &::-webkit-scrollbar {
    display: none; // 隐藏滚动条
  }

-webkit-overflow-scrolling 属性控制元素在移动设备上是否使用滚动回弹效果。

属性值:

  • auto使用普通滚动, 当手指从触摸屏上移开,滚动会立即停止。
  • touch使用具有回弹效果的滚动, 当手指从触摸屏上移开,内容会继续保持一段时间的滚动效果。继续滚动的速度和持续的时间和滚动手势的强烈程度成正比。同时也会创建一个新的堆栈上下文。

参考文档:
MDN

更多推荐

微信小程序开发——scroll-view里边放fixed元素后样式错乱