height:100% 的容器大于整个页面

net*_*tik 4 html css

我正在尝试将内容容器填充到高度的 100%,同时具有 30px 标题。但目前,内容容器大于 100%,导致滚动条。

代码

html {
  padding:0;
  margin: 0;
  height:100%;
}
body {
  padding:0;
  margin: 0;
  height:100%;
}
#header {
  height: 30px;
  background: black;
  width: 100%;
  position: absolute;
  z-index: 2;
}
#container {
  position: relative;
  height:100%;
  padding-top:30px;
  background-color: #aaaaaa;
}
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="style.css">
    <script src="script.js"></script>
  </head>
  <body>
    <div id="header"></div>
    <div id="container"></div>
  </body>
</html>  
Run Code Online (Sandbox Code Playgroud)

演示:https : //plnkr.co/edit/48SJjl9dB7S7IiC8JLcP?p=preview

实现这一目标的正确方法是什么?如果可能的话,我什至更愿意将标题定位为“相对”而不是绝对的。但这可能是不可能的吗?

Chr*_*ris 5

您可以尝试进行以下更改:

#container{
  height: calc(100% - 30px);
  padding-top: 0;
}
Run Code Online (Sandbox Code Playgroud)

您可以删除position两个元素上的属性,因为static在这里工作得很好。

普朗克

您正在将content元素设置为height: 100%这意味着它将占据父元素(body在本例中)可用的完整高度。但header也是 的孩子,body您给它的高度为30px. 100% + 30px 将超过可用的全高,因此你的滚动条。同样添加padding-top,只会增加这个多余的高度。

完整代码

#container{
  height: calc(100% - 30px);
  padding-top: 0;
}
Run Code Online (Sandbox Code Playgroud)
html{
  padding:0;
  margin: 0;
  height:100%;
}

body{
  padding:0;
  margin: 0;
  height:100%;
}

#header{
  height: 30px;
  background: black;
  width: 100%;
  position: relative;
}

#container{
  position: relative;
  height: calc(100% - 30px);
  background-color: #aaaaaa;
}
Run Code Online (Sandbox Code Playgroud)