从我的研究来看,这似乎是一个绝对classic 的CSS问题,但我找不到一个明确的答案——事实就是如此.

如何将内容div设置为100%占用正文高度,减go 固定高度页眉和页脚占用的高度?

<body>
  <header>title etc</header>
  <div id="content">body content</div>
  <footer>copyright etc</footer>
</body>

//CSS
html, body { 
  height: 100%;
}
header { 
  height: 50px;
}
footer { 
  height: 50px;
}
#content { 
  height: 100% of the body height, minus header & footer
}

我想使用纯CSS,并为答案是跨浏览器防弹.

推荐答案

此版本可以在所有最新的浏览器和IE8中运行,如果您有现代版的脚本(如果不是只需将headerfooter更改为divs):

Fiddle

html,
body {
  min-height: 100%;
  padding: 0;
  margin: 0;
}

#wrapper {
  padding: 50px 0;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
}

#content {
  min-height: 100%;
  background-color: green;
}

header {
  margin-top: -50px;
  height: 50px;
  background-color: red;
}

footer {
  margin-bottom: -50px;
  height: 50px;
  background-color: red;
}

p {
  margin: 0;
  padding: 0 0 1em 0;
}
<div id="wrapper">
  <header>dfs</header>
  <div id="content">
  </div>
  <footer>sdf</footer>
</div>

滚动内容:Fiddle

Css相关问答推荐

如果父元素跨越所有网格列,子元素是否可以与网格一起工作?

如何在CSS calc()中使用反向百分比/无单位计算?

CSS动画与不正确的时间比率

VueJS CSS动画不会扩展到v-card/v-col之外

设置项目的最大宽度和最大高度

靴子,为什么我不能让任何东西正确地排好队?

截断风景中的柔子或强制在其自己的线上,如果是肖像

为什么align-content:start应用于单行项目?

设置初始大小并记住分配的最后大小

更改 20 个实例中的一个组件的样式

如果中间元素的内容不适合 CSS,如何将其分隔到新行?

Sass @use 排序

如何测试页面上的文本被删除

带有图像的 CSS 网格在 Firefox 中表现不同

修复导航栏隐藏页面内容

如何更改 CSS:JavaScript 中的根 colored颜色 变量

删除所有填充和边距表格 HTML 和 CSS

模拟显示:React Native 中的内联

为什么只为第一个元素显示双引号?

从 textarea 中删除所有样式(边框、发光)