• 技术文章 >web前端 >css教程

    移动端下弹框禁止背景滑动的实现方法介绍(附代码)

    不言不言2018-10-27 14:45:12转载1308
    本篇文章给大家带来的内容是关于移动端下弹框禁止背景滑动的实现方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

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

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

    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代码微多

    以上就是移动端下弹框禁止背景滑动的实现方法介绍(附代码)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    专题推荐:html5 html css
    上一篇:css中clip属性的应用方法(附代码) 下一篇:css中display属性和border属性常遇问题讲解
    PHP编程就业班

    相关文章推荐

    • 移动端-笔记 - dehua.Chen• rem和em和px vh vw和% 移动端长度单位 - 弑列• 整理HTML5移动端开发的常用触摸事件_html5教程技巧• HTML5 canvas实现移动端上传头像拖拽裁剪效果_html5教程技巧

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网