zoukankan      html  css  js  c++  java
  • 移动端下弹框禁止背景滑动

    移动端下弹框禁止背景滑动

    茴字写法有很多种,找到最适合的才是好的。

    以下下方法在一屛之内是可行的

    body;html 设置overflow:hidden

    
    .overflow-hidden{
        height: 100%;
        overflow: hidden;
    }
    
    // 弹出时
    $('html, body,.page').addClass('overflow-hidden');
    
    // 隐藏时
    $('html, body,.page').removeClass('overflow-hidden');
    

    问题

    • 当body内容超出一屛时,弹框背景页面会自动滚动到顶部,无法回到原来弹框所在的位置

    保存scrollTop,再设置scrollTo

    
    var top = $(window).scrollTop();
    // 弹出时
    $("body .page").css({
        "position": "fixed",
        "top": -top,
        "left": 0,    
        "right": 0,    
        "bottom": 0
    }),
    
    // 隐藏式
    $("body .page").css({
        "position": "static"
    });
    $("html").css({
        "scroll-behavior": "unset"
    });
    $(window).scrollTop(top),
    $("html").css({
        "scroll-behavior": "smooth"
    });
    
    

    问题

    • 当body内容超出一屛时,弹框背景页面会自动滚动到顶部,无法回到原来弹框所在的位置
    • 页面发生了 top 和页面滚动;页面会有闪烁的情况

    绑定touchmove事件,然后调用preventDefault()

    
    function preventDefaultFn(event){
        event.preventDefault();
    }
    
    // 弹出时 遮罩层
    $('.modal-overlay').on('touchmove', preventDefaultFn);
    
    // 隐藏时 遮罩层
    $('.modal-overlay').off('touchmove', preventDefaultFn);
    

    问题

    • 弹框中还有滚动的内容,滚动内容也无法滚动

    解决

    • 给弹框内需滚动的元素添加标记,在判断是否执行event.preventDefault();

    给main元素添加position:absolute(推荐)

    .page {
         /* main绝对定位,进行内部滚动 */
        position: absolute;
        top: 0;
        bottom: 0;
        right:0;
        left:0;
        /* 使之可以滚动 */
        overflow-y: scroll;
        /* 增加该属性,可以增加弹性 */
        -webkit-overflow-scrolling: touch;
    }
    .overflow-hidden{
        overflow: hidden;
    }
    
    // 弹出时
    $('.page').addClass('overflow-hidden');
    
    // 隐藏时
    $('.page').removeClass('overflow-hidden');
    
    <div class="page">
        <!-- 内容在这里... -->
    </div>
    

    优点

    • 没有上述这些问题
    • 随带解决了ios fixed 的相关bug

    缺点

    • 需要改页面结构
    • css代码微多

    原文地址:https://segmentfault.com/a/1190000016820135

  • 相关阅读:
    Educational Codeforces Round 10 C. Foe Pairs 水题
    Educational Codeforces Round 10 B. z-sort 构造
    CDOJ 1048 Bob's vector 三分
    Educational Codeforces Round 10 A. Gabriel and Caterpillar 模拟
    第14届电子科大初赛民间盗版部分题目题解
    HDU 5654 xiaoxin and his watermelon candy 离线树状数组 区间不同数的个数
    HDU 5653 Bomber Man wants to bomb an Array. dp
    HDU 5652 India and China Origins 二分+并查集
    HDU 5651 xiaoxin juju needs help 数学
    HDU 5650 so easy 数学
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9901546.html
Copyright © 2011-2022 走看看