2013-11-23 40 views
0

我正試圖與CSS握手(它曾經是我過去試圖避免的開發的一個方面),但我無法理解我的頭腦。在這。CSS - 列似乎不隨內容增長

目的

  • 有一個2列布局,至少總是整版的高度,但增長如果內容 決定

編輯:兩列都應該是平等的高度,太即都增長到最大。

問題

當含量少於一頁,它仍然在全高度,是我的本意。然而,在內容長於頁面的小提琴之類的情況下,當頁面滾動時,背景不隨內容流動。

enter image description here

的jsfiddle http://jsfiddle.net/tDSAg/

HTML

<header> 
    <div class="header-inner">Header</div> 
</header> 
<div id="outer"> 
<div class="col1"> 
    <p>Start</p> 
    <p>Col1</p> 
    <p>End</p> 
</div> 
<div class="col2"> 
    <p>Start</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>Col2</p> 
    <p>End</p> 
</div> 

CSS

html, body 
{ 
    height: 100%; 
} 

#outer 
{ 
    min-height: 100%; 
    background-color: red; 
    height: 100%; 
    width: 1000px; 
    margin-left: auto; 
    margin-right: auto; 
} 

.col1 
{ 
    background-color: green; 
    width: 220px; 
    float: left; 
    min-height: 100%; 
    height: 100%; 
    margin-right: 10px; 
} 

.col2 
{ 
    background-color: aliceblue; 
    width: 770px; 
    float: left; 
    min-height: 100%; 
    height: 100%; 
} 
header { 
    background-color: orange; 
} 
.header-inner { 
    width: 1000px; 
    margin-left: auto; 
    margin-right: auto; 
} 
+0

你在容器上使用了一個clearfix嗎? – otherDewi

+0

我不是(無論是一個clearfix是!) - @pallandt - 恐怕只是作爲我發佈的小提琴的一個騙局加載,沒有修正? – glosrob

+0

@glosrob錯誤的鏈接,對不起。嘗試http://jsfiddle.net/FB5kU/ – 2013-11-23 20:54:13

回答

2

請注意,這個答案只適用於舊瀏覽器,但現在正確的做法是使用display: table-cell,就像其他人已經回答的一樣。


您可以使用下面的技巧:

#outer { 
    min-height: 100%; 
    overflow: hidden; 
} 
.col { 
    margin-bottom: -10000cm; 
    padding-bottom: 10000cm; 
} 

Demo

訣竅設置一個大的填充所有列(在這種情況下10000cm,注意它必須比大的數最高列的高度),並刪除具有負邊界的額外空間。但高度較低的列將獲得高度(實際上,它是填充的一部分)。

0

查看更新示例here。說實話,我也是隻是想了解CSS的東西,所以我不能給你很好的解釋,但有一點是肯定的,在這裏:

.col1 { 
    background-color: green; 
    width: 220px; 
    float: left; 
    min-height: 100%; 
    height: 100%; 
    margin-right: 10px; 
} 

你應該只留下min-height。我也做了一些其他的改變,不知道它們是否有任何影響。這是棘手的 - height: 100%我也有這樣的印象,事實上這確實保證了100%的內容高度無論如何,但最近我玩了一下,它似乎根據屏幕高度計算這些100%,以及何時你用height:100%修正它,如果你有HD res - 1080px - 就是這樣。你堅持1080像素,這是100%的高度,但如果你離開它,min-height: 100%那麼我認爲你至少得到1080p。

+0

謝謝你的回覆 - 那差不多就在那裏!問題在於左欄不是正確的。我應該更具體。 – glosrob

+0

正如@Kustolovic寫道,我也認爲一個非常普遍的選擇是使用table或'display:table',這個我個人覺得有點混亂。沒有明確的CSS方式來解決這個問題。我研究了很多併爲您節省了一些時間 - 如果您需要更多類似CSS的方法,請使用表格 - 使用jQuery文檔準備好並調整大小始終保持兩個高度相等。我選擇了jQuery選項。 – Leron