基于http://ryanfait.com/sticky-footer/,您可以使用
HTML:
<div id="wrapper">
<div id="header">
Header
</div>
<div id="middle">
Middle<br />Middle<br />Middle<br />Middle<br />Middle<br />Middle<br />Middle<br />Middle
</div>
<div id="push"></div>
</div>
<div id="footer">
Footer
</div>
CSS:
* {
margin: 0;
}
html, body {
height: 100%;
}
#wrapper {
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 auto -4em;
}
#footer, #push {
height: 4em;
}
演示
如果您不想使用语义不正确的#push
元素,可以使用:after
(参见http://css-tricks.com/snippets/css/sticky-footer/),但不适用于旧浏览器。
如果你真的需要中间 div 来填充所有空间,你可以使用浮动元素:
HTML:
<div id="header">
Header
</div>
<div id="middle">
Middle begin<br />Middle<br />Middle<br />Middle<br />Middle<br />Middle<br />Middle<br />Middle end
<div id="push"></div>
</div>
<div id="footer">
Footer
</div>
CSS
* {
margin: 0;
}
html, body {
height: 100%;
}
#header {
float: left;
width: 100%;
}
#middle {
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 auto -4em;
}
#footer, #push {
height: 4em;
clear: both;
}
演示:http: //jsfiddle.net/C43ZJ/2/
请注意,它在 IE7 上不起作用,因为min-height: 100%
triggers hasLayout
,然后#middle
清除浮动#header
(请参阅How to stop IE7 clearing floats because of hasLayout)。