如何在切换移动导航时阻止滚动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在切换移动导航时阻止滚动相关的知识,希望对你有一定的参考价值。

我用html CSS和BS3制作的网站的移动导航是非常基本的。但我想在切换汉堡包按钮时禁用身体其他部分的滚动。

我的问题是,当它打开时,你不能滚动,这是我想要的。但是,当您关闭菜单时,它不起作用。

继承了一些HTML:

  <!--        mobile nav links-->
              <div class="mob-div-nav">
                <div class="row">
                  <div class="col-xs-12" style="height:100%;">

                  </div>
                </div>
              </div>
      <!--        END Mobile Nav-->

这是Js:

  $("#hamburger").on("click", function (event){

  $(".mob-div-nav").slideToggle(500);

  function noscroll() {
  window.scrollTo( 0, 0 );
}
  // add listener to disable scroll

  if ($(".mob-div-nav").css("display") == "block"){

    window.addEventListener('scroll', noscroll);

    } else if ($(".mob-div-nav").css("display") == "none") {

      window.removeEventListener('scroll', noscroll);

    }
});
答案

使用函数内部的if语句不在外面..你的代码应该是这样的

$(document).ready(function(){
  // #hamburger click event
  $("#hamburger").on("click", function (event){
    $(".mob-div-nav").slideToggle(500);
  }); // End of #hamburger click event
  // window scroll event
  $(window).on('scroll' , noscroll);
});

// functions here
// noscroll function
function noscroll() {
  if ($(".mob-div-nav").is(':visible')){
    window.scrollTo( 0, 0 );
  }
}

说明:

以上是关于如何在切换移动导航时阻止滚动的主要内容,如果未能解决你的问题,请参考以下文章

导航抽屉活动:在按钮单击时从片段移动到片段

键盘出现时如何阻止EditText向上移动

如何在滚动列表视图上显示/隐藏底部导航视图?

如何阻止片段一直弹出到根片段? [导航组件]

如何阻止我的 body 元素在导航栏后面滚动?

从一个片段移动到另一个片段时如何自动选择底部导航?