【发布时间】:2014-06-18 02:56:54
【问题描述】:
我正在做一个演示,它会在切换菜单按钮时使用纯 CSS 将内容从屏幕上推出。这将用于滑出式移动导航菜单。
我在这里使用示例作为起点:
http://codepen.io/chriscoyier/pen/umEgv
作者创建了一个导航 div 和一个内容 div。最初导航 div 的宽度为 0,内容 div 的宽度为 100%,如下所示:
.page-wrap {
float: right;
width: 100%;
transition: width 0.3s ease;
}
.main-nav {
position: fixed;
top: 0;
width: 0;
height: 100%;
background: #3B3B3B;
overflow-y: auto;
transition: width 0.3s ease;
}
然后,当您单击菜单切换按钮时,他将宽度尺寸分别更改为 20% 和 80%。
#main-nav:target {
width: 20%;
}
#main-nav:target + .page-wrap {
width: 80%;
}
这一切都很好,但不是将 .page-wrap div 推离屏幕,它只是减小了宽度。这看起来很奇怪,我宁愿把它从屏幕上推开。我尝试将 overflow-x: hidden 添加到正文并删除 .page-wrap 部分的显式宽度,但这不起作用。
.page-wrap {
float: right;
transition: width 0.3s ease;
}
body {
overflow-x: hidden;
}
#main-nav:target {
width: 40%;
}
#main-nav:target + .page-wrap {
.open-menu {
display: none;
}
.close-menu {
display: block;
}
.main-header {
width: 80%;
left: 20%;
}
}
是不是因为#main-nav 的位置设置为“固定”,因此它不能“推送”页面换行 div,因为它超出了文档的正常流程?如果是这样,我该如何解决?
【问题讨论】: