2011-10-21 67 views
1

我已經查看了一下這個問題的一些問題和答案,但是對於我的情況似乎沒有一個最好的答案。如何使三列的高度相同?

我有一個頁面(http://awesomealbums.info/?1062/chris-cornell)與三個垂直列。我希望列看起來是相同的高度,無論是否有足夠的內容。

三列:

1)左側 2)中間 3的內容列)右邊的廣告欄,導航欄

什麼CSS/DIV選項做到這一點?

+1

我沒有看到三列:P –

+0

1)導航欄左側2)中間的內容列3)右側的廣告欄 –

+0

http://www.alistapart.com/articles/fauxcolumns/ – Jawad

回答

0

的一種方式(因爲你列反正固定寬度)是使用定位(絕對是精確的)。使用這種方法,你可能會改變你的css規則如下:

#PagePad { 
    background: white; 
    position: relative; 
} 

#Column_1_3 { 
    border-left: 1px #7D7D7D SOLID; 
    width: 175px; 
    text-align: right; 
    padding: 10px; 
    background: white; 
} 

#Column_2_3 { 
    width: 540px; 
    border-left: 1px #7D7D7D SOLID; 
    border-right: 1px #7D7D7D SOLID; 
    float: left; 
    padding: 20px; 
    background: white; 
    margin: 0px; 
    position: absolute; 
    margin-left: 196px; 
    bottom: 0px; 
    top: 0px; 
} 

#Column_3_3 { 
    width: 180px; 
    border-right: 1px #7D7D7D SOLID; 
    background: white; 
    float: left; 
    text-align: center; 
    margin-left: 778px; 
    position: absolute; 
    top: 0px; 
    bottom: 0px; 
} 

不知道它是如何跨瀏覽器。

1

使用負邊距'缺陷'。

爲每列指定-9999的下邊距和9999的下邊距以及100%的高度。我不確定這是否正確。但是這個想法是,隨着一個容器擴展,其他容器也將全部擴展,因爲100%的高度,填充和邊距工作使得邊界隱藏在100%高度之外 - 谷歌對於「負邊界欄」。

Alterantivly使用CSS的討論看到所有的業界公認的方法來建立3點佈局,有液體的例子 - http://css-discuss.incutio.com/wiki/Three_Column_Layouts

+0

這似乎是解決棘手問題的好方法。許多解決方案對我來說似乎很奇怪,例如表格,CSS表格,人造列......感謝您的簡潔說明。 – nicorellius

3

我最近發現了完美的解決方案。這確實需要使用JavaScript/jQuery。基本上,一旦頁面加載,獲得所有div的自然高度。選擇每個div的最大自然高度。將所有div設置爲該高度。

<style> 

body { 
    font-size: .9em; 
} 
#ProductWrapper { 
    width: 620px; 
    float: left; 
} 
.ProductDiv { 
    width: 200px; 
    float: left; 
    background: rgb(240,240,240); 
    margin: 1px; 
    overflow: auto; 
} 

<div id="ProductWrapper"> 
<div class="ProductDiv" data-nat-height=''>asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf</div> 
<div class="ProductDiv" data-nat-height=''>asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf </div> 
<div class="ProductDiv" data-nat-height=''>asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf </div> 
</div> 




<script type="text/javascript"> 
$(document).ready(function() { 

// GET MAX NAT HEIGHT 
var MaxHeight = 200; 
$(".ProductDiv").each(function() { 
    var Height = $(this).height(); 
    if (Height > MaxHeight) { 
     MaxHeight = Height; 
    } 
    $(this).attr("data-nat-height", Height); 
}); 
// SET TO MAX HEIGHT 
$(".ProductDiv").css("height", MaxHeight+"px"); 

}); 
</script> 
+0

將MaxHeight變量初始化爲0會更好!基本上,該初始值將是您希望列的最小高度。 – Fredy31

+0

@ Fredy31,我得出了同樣的結論,並在現實生活中編輯了我的代碼。謝謝! –