Comment éviter de faire défiler le contenu du corps et activer le défilement sur toile de navigation lors de l'ouvrir?

J'ai mis en place une base très large-toile de navigation(http://blog.tomri.ch/super-simple-off-canvas-menu-navigation/). Le seul problème que je vais avoir, c'est que vous ne pouvez pas faire défiler le menu, ce qui est particulièrement problématique dans le mobile en mode paysage, où le menu s'étend au-dessous de la partie visible de l'écran.

Je me demandais si il ya une façon, lorsque le menu de navigation est ouverte, pour éviter que le contenu à l'intérieur de la page-wrapper div de défilement et activer le défilement dans le hors-la navigation sur le canevas, et, si possible, de ne pas montrer un gros laid de la barre de défilement sur la barre de navigation.

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>

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;
}

Javascript:

$(".menu-link").click(function(){
$("#menu").toggleClass("active");
$(".page-wrapper").toggleClass("active");
});
ce qui est hors-la navigation sur le canevas?
La navigation est absolument placé de sorte qu'il reste en dehors de la zone visible jusqu'à ce qu'il est déclenché.
Il est beaucoup plus facile à stocker l'état dans le corps ou balise html. $("html").toggleClass("menu-active"); avec les sélecteurs css .menu-active .page-wrapper et .menu-active #menu. De cette manière, ils restent tous dans la synchronisation, et une seule classe modifie les deux ensembles de propriétés css.

OriginalL'auteur APAD1 | 2014-05-14