【发布时间】:2016-04-04 18:19:22
【问题描述】:
我正在尝试使用 标题、导航栏和正文(在导航栏的右侧)制作标准网站布局) 和一个页脚。
到目前为止,我已经这样做了:
<!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 和 min-height 以填充剩余部分垂直空间,即:
但它不影响它。但是,如果我这样做 height: 500px 它会按预期调整大小(当然这现在不是很好的做法,因为不同的屏幕尺寸等会显示页面的不同部分或视图):
所以基本上我在问我如何能够使divs 填充剩余的垂直空间而不使用一些硬编码值,即100px,而不是我想以百分比来做到这一点,因此页面将在所有浏览器上看起来都一样
【问题讨论】:
-
你可以使用
display:table-cell,但它不支持糟糕的IE 7或更低版本。否则,可怕的<table>可能会替代 div。这是兼容性与语义。 -
@TheBronx 老实说,我在 HTML 中有点胡思乱想,我已经搜索过,但我找不到确切的操作。另一个问题是 JQuery 但我不想添加更多依赖项(因为我正在做 XHTML 和 PHP)...
-
@AramKocharyan 我看得很清楚,我的目标是兼容性,因此是 div ......但我只是找不到任何解决方案来解决我认为
height:100%可以解决的问题?!? -
@DavidKroukamp 好吧,真正的答案是“你不能用 CSS 填充剩余的垂直空间”。这就是为什么您可能找不到好的解决方案。你会发现尝试解决部分问题的 javascript hack 和奇怪的 css 组合。