9

我正在尝试使用页眉导航栏、正文(在导航栏的右侧)和页脚制作标准网站布局。

现在我已经做到了:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Test</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <style type="text/css" media="screen">

            .header {
                float: top;
                width: 100%;
                height: 75px;
            }

            .navbar {
                float: left;
                width: 20%;
                height: 100%;
                height: 100%;
                min-height:100%;
                overflow: scroll;
            }

            .body {
                float: right;
                width: 80%;
                height: 100%;
                min-height:100%;
                overflow: scroll;
            }
            .footer {
                float: bottom;
                width: 100%;
            }
        </style>
    </head>
    <body>
        <div class="header"> Header </div>
        <div class="navbar"> Nav Bar </div>
        <div class="body"> Body </div>
        <div class="footer"> Footer</div>
    </body>
</html>

产生这个:

在此处输入图像描述

现在,如果我们检查 CSS:

.navbar {

    float: left;
    width: 20%;
    height: 100%;
    min-height: 100%;
    overflow: scroll;
}

.body {
    float: right;
    width: 80%;
    height: 100%;
    min-height: 100%;
    overflow: scroll;
}

如您所见,我尝试设置正文和导航栏的高度最小高度以填充剩余的垂直空间,即:

在此处输入图像描述

然而它并不影响它。但是,如果我height: 500px按预期进行调整大小(当然这现在不是很好的做法,因为不同的屏幕尺寸等会显示页面的不同部分或视图):

在此处输入图像描述

所以基本上我在问我如何能够divs在不使用一些硬编码值的情况下填充剩余的垂直空间,即100px我想以百分比来填充,因此页面在所有浏览器上看起来都一样

4

2 回答 2

5

将此代码添加到您的正文中,html:

body,html{
  height:100%;
}

并制作您的导航栏<div id="navbar">,而不是<div class="navbar"> 添加 height: 100%; 到您的导航栏

#navbar{
  height:100%
// rest of your code
}

与您的内容相同,将其称为内容,因为已经使用了正文。

#content{
  height:100%
// rest of your code
}

现在所有 div 的高度都为 100%,因此是整个浏览器的高度。

编辑:您的完整代码如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Test</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <style type="text/css" media="screen">

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

            #header {
                width: 100%;
                height: 75px;
            }

            #navbar {
                float: left;
                width: 20%;
                height: 100%;
                min-height:100%;
                overflow: scroll;
            }

            #content {
                float: right;
                width: 80%;
                height: 100%;
                min-height:100%;
                overflow: scroll;
            }
            #footer {
                width: 100%;
            }
        </style>
    </head>
    <body>
        <div id="header"> Header </div>
        <div id="navbar"> Nav Bar </div>
        <div id="content"> Body </div>
        <div id="footer"> Footer</div>
    </body>
</html>
于 2013-04-10T10:21:43.370 回答
1

对每个内容块(页眉、页脚、侧边栏、正文)使用绝对定位,对于正文和导航栏 div,设置顶部和底部位置属性,而不是指定高度属性。这将迫使它们填充剩余的视口高度。

更多细节在这里

...为了支持 IE5 和 IE6,这是一个仅使用 CSS(无 javascript)的改进版本。

于 2013-04-14T18:19:51.960 回答