我正在尝试制作标准网站布局,其中包含标题,导航栏正文(位于导航栏右侧) )和页脚。
现在我已经做到了这一点:
<!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;
}
正如您所看到的,我已尝试设置正文和导航栏的高度和 min-height 以填充剩余部分垂直空间即:
然而它并没有影响它。但是,如果我height: 500px
,它会像预期的那样调整大小(当然,现在这不是很好的练习,因为不同的屏幕尺寸等会显示页面的不同部分或视图):
所以基本上我问我怎样才能使divs
填充剩下的垂直空间而不使用一些硬编码的值,即100px
而我想以百分比形式完成因此,所有浏览器上的页面看起来都一样
答案 0 :(得分:5)
将此代码添加到您的身体,html:
body,html{
height:100%;
}
并设置导航栏<div id="navbar">
而不是<div class="navbar">
然后加高: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>
答案 1 :(得分:3)
在我看来,您正在尝试实施CSS sticky footer - 所以您的页脚始终位于底部,内容似乎填满了页面的其余部分。
答案 2 :(得分:1)
对每个内容块(页眉,页脚,侧边,正文)使用绝对定位,对于body和nav-bar div,设置顶部和底部位置属性,而不是指定height属性。这将强制它们填充剩余的视口高度。
...并且支持IE5和IE6,here's an improved version仅使用CSS(无javascript)。