js 移动端两层滚动,禁止底层滚动

624 阅读1分钟

一. 问题描述

移动端外层dom是滚动的,如果有弹出框,也是滚动的,就会出现两层滚动

二. 问题思路

  • 想办法正面直接去除
  • 直接去除不能实现,想办法间接去除,比如超出隐藏,内容和背景同色,透明等
  • 如果间接也去除不了想办法用另一种方法实现

三. 问题方法

  • 直接去除 安卓两层滚动没有问题,iOS两层滚动底部会滚动,无法直接去除

  • 间接去除

    1. 直接去除可以通过监听弹出框是否打开,如果打开直接在底部滚动dom display: none, 如果弹出框没打开,底部滚动dom display: auto。底部dom也可直接换成 body
    2. 可以在弹出框上禁止默认事件和冒泡事件,这种方法我失败了,具体原因私聊。
  • 其他思路

    可以将弹出框用另一个页面打开,或者弹出框全屏。