如何防止在正文内容上滚动并在打开时启用在画布外导航时滚动?

APA*_*AD1 5 html javascript css navigation jquery

我已经实现了一个非常基本的画布外导航(http://blog.tomri.ch/super-simple-off-canvas-menu-navigation/).我唯一的问题是你无法滚动菜单,这在移动横向模式下尤其成问题,其中菜单延伸到可视屏幕区域下方.

我想知道是否有一种方法,当导航菜单打开时,防止page-wrapperdiv中的内容滚动并在离开画布的导航中启用滚动,并且如果可能的话,不会在导航上显示一个很难看的滚动条.

HTML:

<nav id="menu">
    <a href="#menu" class="menu-link"></a>
    <ul>
       <span><a href="#">Title</a></span>
       <li><a href="#">Home</a></li>
       <li><a href="#">About</a></li>
       <li><a href="#">Contact</a></li>
       <li><a href="#">Blog</a></li>
    </ul>
</nav>

<div class="page-wrapper">
    Body Content Here
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

#menu {
    position: fixed;
    top: 0;
    bottom: 0;
    width: 13.755em;
    right: -13.755em;
    height: 100%;
    -webkit-transform: translate(0px, 0px);
    -moz-transform: translate(0px, 0px);
    -o-transform: translate(0px, 0px);
    -ms-transform: translate(0px, 0px);
    transform: translate(0px, 0px);
    -webkit-transition: 0.15s ease;
    -moz-transition: 0.15s ease;
    -o-transition: 0.15s ease;
    transition: 0.15s ease;
}
    #menu.active {
        -webkit-transform: translate(-13.755em, 0px);
        -moz-transform: translate(-13.755em, 0px);
        -o-transform: translate(-13.755em, 0px);
        -ms-transform: translate(-13.755em, 0px);
        transform: translate(-13.755em, 0px);
    }
.page-wrapper {
       -webkit-transform: translate(0px, 0px);
       -moz-transform: translate(0px, 0px);
       -o-transform: translate(0px, 0px);
       -ms-transform: translate(0px, 0px);
       transform: translate(0px, 0px);
       -webkit-transition: 0.15s ease;
       -moz-transition: 0.15s ease;
       -o-transition: 0.15s ease;
       transition: 0.15s ease;  
}
    .page-wrapper.active {
           -webkit-transform: translate(-13.725em, 0px);
           -moz-transform: translate(-13.725em, 0px);
           -o-transform: translate(-13.725em, 0px);
           -ms-transform: translate(-13.725em, 0px);
           transform: translate(-13.725em, 0px);
    }

.menu-link {
    position: absolute;
    top: 15px;
    left: -50px;
}
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

$(".menu-link").click(function(){
    $("#menu").toggleClass("active");
    $(".page-wrapper").toggleClass("active");
});
Run Code Online (Sandbox Code Playgroud)

Sha*_*son 4

要使任何块级元素能够滚动,您需要overflow:auto;根据您的站点/应用程序提供 & height:100%;。要禁用主要内容的滚动,您可以执行一些操作,但您必须进行试验。您可以将导航扩展到页面的 100% 宽度,并且您看到内容的区域恰好被不可见元素覆盖,以阻止滚动或仅继续滚动导航。您还可以在单​​击时禁用/启用正文上的滚动,请注意,最佳结果适用于overflow:hidden;,html,body它解决了一些跨浏览器/ios 问题。

希望这能给您一些见解!