基於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;
}
Demo
如果你不希望有一個語義上不正確#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%
觸發hasLayout
,然後#middle
清除浮動#header
(見How to stop IE7 clearing floats because of hasLayout)。
您可以重新排列,以便頁眉和頁腳*在中間的'div'內?然後,您可以將'絕對位置'定位爲中間有'最小高度:100%'的頁眉和頁腳。 – willoller
也是這樣的:http:// stackoverflow。com/questions/8264499/css-min-height-100-with-multiple-divs?rq = 1 – willoller
嗨,willower,非常感謝您的努力 - 我認爲您提到的問題幾乎可以回答我的問題 - 或者接近我會得到它。還有一些複雜性,但希望我可以實現display:table&display:table-row屬性作爲解決方案。乾杯。 – Inigo