问题
I'm trying to make a mobile experience similar to toyota.com's website. Basically I'd like to have the menu's DIV appear, and have a scroll bar for the overflow. I've set the HTML, and body tag to 100%... but I see that the menu is not reaching the bottom. It's not quite reaching the bottom, because the header's height. However, I don't know how to fix this. I've seen this asked so many times, but the cases appear to be different than my own circumstances.
If at all possible, may you take a look at my JSFiddle? It can be found at: https://jsfiddle.net/x5cry4Lx/5/
My existing CSS (as a reference)...:
html, body {
height: 100%;
}
body.mobile-nav-open {
overflow: hidden;
}
.starter-template {
text-align: center;
}
section#header {
height: auto;
padding: 15px;
border-bottom: 1px solid #000;
background: #fff;
height: 36px;
}
section#header a.openNav,
section#header a.closeNav {
font-size: 11px;
color: #000;
text-decoration: none;
text-transform: uppercase;
}
section#header a.openNav i,
section#header a.closeNav i {
display: block;
font-size: 20px;
text-align: center;
}
section#header a.closeNav {
display: none;
}
body.mobile-nav-open section#header a.openNav {
display: none;
}
body.mobile-nav-open section#header a.closeNav {
display: block;
}
section#mobile-menu {
width: 100%;
height: 100%;
background: #fff;
z-index: 999;
display: none;
overflow-y: scroll;
}
section#mobile-menu li {
list-style: none;
}
section#mobile-menu li a {
text-decoration: none;
}
And my HTML (as a reference)...:
<section id="header">
<div class="pull-right">
<a href="#" class="openNav"><i class="fa fa-bars"></i>Menu</a>
<a href="#" class="closeNav"><i class="fa fa-close"></i>Close</a>
</div>
<div class="clearfix"></div>
</section>
<section id="mobile-menu">
<div class="container">
<div class="starter-template">
<ul class="list-unstyled">
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</div>
</div>
</section>
Any assistance is greatly appreciated!
回答1:
There are different ways to achieve this.
1. Using calc
. Where 67px
is the height of the header.
Changes:
html,
body {
height: 100%;
margin: 0;
}
section#mobile-menu {
width: 100%;
height: calc(100% - 67px);
background: #fff;
z-index: 999;
display: none;
overflow-y: scroll;
}
2. Making your header position:absolute;
and give the body padding-top:67px;
.
DEMO
Changes:
* {
box-sizing:border-box;
}
body {
padding-top:67px;
margin:0;
}
section#header {
padding: 15px;
border-bottom: 1px solid #000;
background: #fff;
height: 67px;
position:absolute;
left:0;
top:0;
width:100%;
}
来源:https://stackoverflow.com/questions/36010541/css-div-not-scrolling-to-the-bottom-when-height-is-100