编辑:对不起,我感到很尴尬。大约一年前我做了类似的事情,但起初我认为不可能将其调整到这种情况。显然是的。
正如我认为其他人已经说过的那样,可以通过绝对定位将页脚 div 放在底部。问题是当内容 div 变大时调整它的位置。由于页脚是绝对定位的,它不会跟随内容 div 的流动,即使内容扩展,它也会保持在同一个位置。
诀窍是将所有内容包装在绝对定位的 div 中。如果内容变大,它将扩展,并且页脚 div 将根据包装器的边框而不是文档的边框定位。
这是代码。尝试在内容 div 中放置一堆<br />
标签,您会发现一切都在调整。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Layout test</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
#wrapper {
min-height: 100%;
min-width: 100%;
position: absolute;
}
#header {
height: 100px;
background-color: red;
}
#content {
background-color: gray;
margin-bottom: 50px;
}
#footer {
height: 400px;
min-width: 100%;
position: absolute;
bottom: 0px;
margin-bottom: -350px;
background-color: blue;
}
</style>
</head>
<body>
<div id="wrapper">
<div id='header'>Header</div>
<div id='content'>
Content
</div>
<div id='footer'>footer</div>
</div>
</body>
</html>
原来的:
可悲的是,css 缺乏一种干净的方式来做到这一点。您不知道视口高度(称为 h),因此无法计算 h-100-50 您必须构建您的网站,以便大多数人会看到 50px 的页脚 div。这样做的方法是为内容 div 设置一个最小高度。
最小高度值必须从某个标准视口高度派生而来。谷歌实验室已经为他们的访问者发布了他们关于视口大小的数据,并在这里做了一个很好的可视化:http:
//browsersize.googlelabs.com/
我为我自己的视口设计,它是 620px 高(根据 google ~80% 有这个视口高度)。因此,内容 div 的最小高度应为 620-100-50 = 470 像素。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Layout test</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
#header {
height: 100px;
background-color: red;
}
#content {
min-height: 470px;
background-color: gray;
}
#footer {
height: 400px;
background-color: blue;
}
</style>
</head>
<body>
<div id='header'>Header</div>
<div id='content'>
Content
</div>
<div id='footer'>footer</div>
</body>
</html>