如何使一个 div 扩大以适应可用的垂直空间?

24

我正在寻找一种方法,使包含主页内容的 div 在添加页眉和页脚后能够自动扩展以适应剩余空间。HTML 页面的布局如下:

<div id="wrapper">
    <div id="header-wrapper">
        <header>
            <div id="logo-bar"></div>
        </header>
        <nav></nav>
    </div>
    <div id="content"></div>
</div>


<div id="footer-wrapper">
    <footer></footer>
</div>

通过将#wrapper的最小高度设置为100%,设计使页脚始终超出页面底部。问题是#content不会扩展以填充# wrapper内部的空白空间,这使得难以获得我想要的外观。如何能做到这一点?

3个回答

9

编辑:
为什么不使用顶部和底部。以下是完整示例。
您可以调整顶部和底部值,以优化页眉/页脚的位置。

<html>
 <head>
  <style type="text/css">
   BODY {
     margin: 0;
     padding: 0;
   }

   #wrapper {
     position: relative;
     height: 100%;
     width: 100%;
   }

   #header-wrapper {
     position: absolute;
     background-color: #787878;
     height: 80px;
     width: 100%;
   }

   #content {
     position: absolute;
     background-color: #ababab;
     width: 100%;
     top: 80px;
     bottom: 50px;
   }

   #footer-wrapper {
     position: absolute;
     background-color: #dedede;
     height: 50px;
     width: 100%;
     bottom: 0;
   }
  </style>
 </head>
 <body>
  <div id="wrapper">
    <div id="header-wrapper">
      <div id="header">
        <div id="logo-bar">Logo</div>
      </div>
      <div id="nav"></div>
    </div>
    <div id="content">Content</div>
    <div id="footer-wrapper">
      <div id="footer">Footer</div>
    </div>
  </div>
 </body>
</html>

div 上同时使用 topbottom 属性会导致 IE6 和 IE7/8 在怪异模式下出现问题。不知道 OP 是否想支持这些浏览器。 - Marcel Korpel
使用 top/bottom 是个好主意,我总是忘记它们。感谢详细的回答! - vilhalmer
这种上下技术是否适用于固定宽度的居中960内容div? - user1114176
@Jordan,没问题,请确保外部div是相对定位,内部div是绝对定位。 - Yvo
@sproketboy 我通过在 #content 的 CSS 中添加 overflow:scroll 来使滚动工作。 - Derek Kurth

3

1
这个解决方案可以解决滚动问题。当页面过大时,您的页脚将距离整个内容2行:
   <style>
       #container {
        position: relative;
        height: 100%;
     }
     #footer {
        position: absolute;
        bottom: 0;
     }
    </style>

    </HEAD>

    <BODY>

     <div id="container">

        <h1>Some heading</h1>

    <p>Some text you have</p> 

    <br>
    <br>

    <div id="footer"><p>Rights reserved</p></div>

    </div>

    </BODY>
    </HTML>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接