2013-10-21 21 views
0

我之前試過問過這個問題,但通過迴應評論和評論,我沒有把我的問題弄清楚。所以我會再來一次。用圖片和東西。CSS:非離散最小高度與母公司相關,但也可以擴展父母

我有一個簡單的頁面,包含4個主要元素:頁眉,頁腳和中間,都包含在一個包裝中。包裝應至少爲屏幕高度的100%。頁腳粘性 - 永久卡在包裝紙的底部。標題始終處於相同的位置。

棘手的部分是中間;我希望它始終跨越頁眉和頁腳之間的整個空間,但是,如果需要,還可以推動包裝擴展到最小高度以上。

這裏是我的問題的說明:enter image description here

jsfiddle

我能想到的唯一方法是使用css calc方法,但它太不可靠了。任何人都可以提出一個更好的方法來實現這個請。

編輯:

在插圖中示出的綠色是中間DIV,不顯示通過所述包裝。即。我特別需要中間div來始終跨越頁眉和頁腳之間的完整空隙。

+0

您可以重新排列,以便頁眉和頁腳*在中間的'div'內?然後,您可以將'絕對位置'定位爲中間有'最小高度:100%'的頁眉和頁腳。 – willoller

+0

也是這樣的:http:// stackoverflow。com/questions/8264499/css-min-height-100-with-multiple-divs?rq = 1 – willoller

+0

嗨,willower,非常感謝您的努力 - 我認爲您提到的問題幾乎可以回答我的問題 - 或者接近我會得到它。還有一些複雜性,但希望我可以實現display:table&display:table-row屬性作爲解決方案。乾杯。 – Inigo

回答

0

基於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)。

+0

嗨,Oriol,謝謝你的回覆。我意識到這種粘性頁腳技術,但是,我特別需要中間div來始終跨越頁眉和頁腳之間的整個空間,這是無法實現的。查看更新:http://jsfiddle.net/Inigo/C43ZJ/1/(中間添加了黃色) – Inigo