如何使用css使主要内容div填充屏幕的高度

2022-08-30 05:28:15

所以我有一个网页,上面有页眉,主体和页脚。我希望主体填充页面的 100%(在页脚和页眉之间填充 100%)我的页脚是绝对位置,底部为:0。每次我尝试将主体设置为 100% 高度或更改位置或其他内容时,它也会溢出页眉。如果将正文设置为绝对位置(因为我的标头高度为40px),则只会向下移动40px,从而创建一个滚动条。top: 40

我创建了一个简单的html文件,因为我实际上无法从实际项目中发布整个页面/ css。使用示例代码,即使主内容主体填满了屏幕,它也向下移动了40px(我假设标题的原因)。

html,
body {
  margin: 0;
  padding: 0;
}

header {
  height: 40px;
  width: 100%;
  background-color: blue;
}

#maincontent {
  background-color: green;
  height: 100%;
  width: 100%;
}

footer {
  height: 40px;
  width: 100%;
  background-color: grey;
  position: absolute;
  bottom: 0;
}
<html>

<head>
  <title>test</title>
  <link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
  <header></header>
  <div id="maincontent">

  </div>

  <footer></footer>
</body>

</html>

有人知道答案吗?


答案 1

这些都不是必需的

  • 移除高度(以 % 为单位)
  • 删除 jQuery

使用底部和顶部拉伸 div :

.mainbody{
    position: absolute;
    top: 40px; /* Header Height */
    bottom: 20px; /* Footer Height */
    width: 100%;
}

检查我的代码: http://jsfiddle.net/aslancods/mW9WF/

或检查这里:

body {
    margin:0;
}

.header {
    height: 40px;
    background-color: red;
}

.mainBody {
    background-color: yellow;
    position: absolute;
    top: 40px;
    bottom: 20px;
    width:100%;
}

.content {
    color:#fff;
}

.footer {
    height: 20px;
    background-color: blue;
    
    position: absolute;
    bottom: 0;
    width:100%;
}
<div class="header" >
    &nbsp;
</div>
<div class="mainBody">
    &nbsp;
    <div class="content" >Hello world</div>
</div>
<div class="footer">
    &nbsp;
</div>

答案 2

没有Javascript,没有绝对定位,也没有固定的高度。

这是一个全CSS / CSS only方法,不需要固定高度或绝对定位

/* Reset */

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


/* Essentials */

.container {
  display: table;
}

.content {
  display: table-row;
  height: 100%;
}

.content-body {
  display: table-cell;
}


/* Aesthetics */

.container {
  width: 100%;
  height: 100%;
}

.header,
.footer {
  padding: 10px 20px;
  background: #f7f7f7;
}

.content-body {
  padding: 20px;
  background: #e7e7e7;
}
<div class="container">
  <header class="header">
    <p>This is the header</p>
  </header>
  <section class="content">
    <div class="content-body">
      <p>This is the content.</p>
    </div>
  </section>
  <footer class="footer">
    <p>This is the footer.</p>
  </footer>
</div>

此方法的好处是页脚和页眉可以增长以匹配其内容,并且正文将自动调整自身。您还可以选择使用 css 限制它们的高度。