CSS - DIV not scrolling to the bottom, when height is 100%

谁说胖子不能爱 提交于 2020-01-02 09:39:24

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!