【H5】阻止h5移动端弹窗页面弹层出现后禁止弹层下方页面滑动

7 篇文章 0 订阅
6 篇文章 0 订阅
摘要:昨天写页面的时候遇到了这样一个问题,有一个页面是有弹层出现的,弹层的内容高度不定。所以就给弹层设置了一个最大高为屏幕
     的80%,内容高度超出这个高度则给弹出层添加overflow:hidden属性。实现弹出层内容在弹出层内部实现滑动的效果。但是问题也就
     这样产生了。弹出层的下面页面也是能滑动,并且有时候会和弹出层内部的滑动出现冲突问题。
思路:
    1.通过给body设置overflow:hidden属性去隐藏超出手机屏幕的内容,以实现弹出层下页面滑动的问题
    2.通过给body设置fixed定位来解决底部页面滑动问题

首先我们下来看下效果图

上代码

首先我们需要先写两个函数方便之后控制禁止滑动好添加

//关闭弹出层底部页面滑动
function closeBodyScroll() {
    window.lockMaskScrollTop = document.scrollingElement.scrollTop || document.body.scrollTop;
    document.body.classList.add('open');
    document.body.style.top = -window.lockMaskScrollTop + "px";
    $("video").removeAttr("controls");
}

//打开弹出层底部页面滑动
function openBodyScroll() {
    if (document.body.classList.contains('open')) {
        document.body.classList.remove('open');
        document.scrollingElement.scrollTop = window.lockMaskScrollTop;
    }
}

其次我们还需要在css里面给body设置这个属性

第一种解决方案
body.open {
    height: 100%;
    overfolw: hidden;
}

第二种解决方案
body.open {
    position: fixed;
}

然后我们只需在打开弹出层和关闭弹出层的时候调用上面的两个函数控制弹出层底部页面是否滑动即可(以下仅做示例所用,请根据各自的效果进行调整即可)

    // 公用打开报名表单
    $(".publiclassopenform").click(function(e) {
        $(".background-blank").fadeIn();
        $(".signMeeting_formbox").slideToggle();
        //关闭页面滑动
        closeBodyScroll();
    })

    //报名部门选择
    $(".signMeeting_formdepartitem").click(function(e) {
        $(".signMeeting_formdepartitem").removeClass("departactive");
        $(this).addClass("departactive");
        $(".chevalue").val($.trim($(this).text()));
    })

    //公用关闭报名表单
    $(".signMeeting_formclosebox").click(function(e) {
        $(".background-blank").fadeOut();
        $(".signMeeting_formbox").slideToggle();
        //打开页面滑动
        openBodyScroll();
    })

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上帝把我扔在人间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值