zoukankan      html  css  js  c++  java
  • 如何解决移动端滚动穿透问题

    什么是滚动穿透

    在弹框上滑动时,会发现弹框下面的内容跟着在滚动,这个就是滚动穿透问题。

    在 PC 端,通过在 body 上添加  overflow:hidden;  可以解决这个问题,但是该方法在移动端是无效的,所以我们通常意义上的滚动穿透指的都是移动端。

    解决方案

    方案一:position: fixed;

    body.modal-open {
        position: fixed;
        height: 100%;  
    }

    通过为body添加 fixed 属性禁止body中其他元素滚动,但是会导致 body 中滚动位置丢失,所以还需要添加一些代码来记住以及还原滚动位置。

    弹框前:

    const scrollTop = document.body.scrollTop;

    弹框后:

    document.body.scrollTop = scrollTop;

    方案二:touchmove+preventDefault

    最好将所有弹框出现后禁止滚动的元素添加到一个 div 中(如果是为 body 元素添加 touchmove+preventDefault,会导致 modal 中内容过长时也不能滚动),然后为该元素添加 touchmove 事件监听,并阻止元素的默认行为。

    $('.modal-open .main').on('touchmove', function(e) {
        e.preventDefault();
    });    
  • 相关阅读:
    css设置页面内容不能被选中
    bootstrap栅格系统
    MVC框架
    类模板
    c++编译器模板机制剖析
    函数模板与函数重载
    函数模板当参数强化
    泛型编程—函数模板
    用友GRP-u8 注入-RCE漏洞复现
    漏洞代码调试(二):Strtus2-001代码分析调试
  • 原文地址:https://www.cnblogs.com/philipding/p/10238012.html
Copyright © 2011-2022 走看看