【发布时间】:2014-05-14 20:45:00
【问题描述】:
我已经实现了一个非常基本的画布外导航(http://blog.tomri.ch/super-simple-off-canvas-menu-navigation/)。我遇到的唯一问题是您无法滚动菜单,这在移动横向模式下尤其成问题,菜单延伸到可视屏幕区域下方。
我想知道是否有办法在导航菜单打开时阻止page-wrapper div 中的内容滚动并在画布外导航中启用滚动,并且如果可能的话,不显示大导航上丑陋的滚动条。
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");
});
【问题讨论】:
-
什么是画布外导航?
-
导航是绝对定位的,所以它一直在可视区域之外,直到被触发。
-
在 body 或 html 标签中存储状态要容易得多。
$("html").toggleClass("menu-active");带有 css 选择器.menu-active .page-wrapper和.menu-active #menu。这样它们都保持同步,并且单个类会修改两组 css 属性。
标签: javascript jquery html css navigation