2012-03-29 49 views
1

我有一個測試網站,這裏有兩列,都是絕對定位。如何在CSS中給出div全高

http://dl.dropbox.com/u/17844821/zeug/heighttest.html

正如你可以看到,左邊的列比右邊多了一個內容,所以這將導致滾動條。 因爲我想要右欄獲得與左欄相同的高度,所以我給了它height: 100% css屬性。

現在向下滾動,你會看到會發生什麼。 右列擴展至瀏覽器窗口高度的100%,而不是整個網站的100%高度。

我該如何給兩個div 100%的全高? (已經嘗試過bottom: 0;爲正確的格將無法工作。)

注: .wrapper 必須position: absolute,因爲它是我原來整個網站佈局的要求。

+0

您應該使用花車,而不是絕對定位。 – 2012-03-29 15:06:12

+0

@Diodeus好吧,這裏是一個浮動版本。 http://dl.dropbox.com/u/17844821/zeug/heighttest2.html - 仍然有同樣的問題。 – Timo 2012-03-29 15:10:21

回答

1

只能使用這樣的:

body { overflow:auto; margin:0; } 
.wrapper { display:table; width:100%; } 
.left, .right { display:table-cell; width:50%; } 
+0

謝謝Jan,這看起來像一個非常優雅的解決方案,但如果我需要.wrapper被絕對定位呢?當我的網絡應用程序啓動時,我使用'top:-100%'來隱藏它。然後點擊鏈接後,我使用jQuery設置'top:0'通過動畫過渡將其滑入。 – Timo 2012-03-29 17:05:27

+1

使用不透明度隱藏元素,效果更好。如果你確實需要絕對的話,只需要在jQuery $('。left,.right')中進行操作。height(Math.max($('。left).height(),$('。right')。height() ,$(窗口).height())); – 2012-03-29 19:05:45

1

你並不是真的需要「包裝」,但如果你把它放在裏面,你也需要把它做成100%的高度。

html, body{ 
    height: 100%; 
} 

body{ 
    overflow: hidden; 
} 

.red{ 
    background: red; 
} 

.blue{ 
    background: blue; 
} 

.wrapper{ 
height:100% 
} 

.left{ 
    float: left; 
    width: 50%; 
    height:100%; 
} 

.right{ 
    float: right; 
    height: 100%; 
    width: 50%; 
} 
+0

試過。沒有工作。 – Timo 2012-03-29 17:11:56

0

您可以使用表格實現這一目標。雖然我意識到有些人不喜歡數據表示以外的任何表格。

例如見dabblet: http://dabblet.com/gist/2238394

CSS

.red{ 
    background: red; 
} 

.blue{ 
    background: blue; 
} 

.wrapper{ 
    overflow: auto; 
    width:100%; 
} 
td{ 
    vertical-align:top; 
} 

HTML

<table class="wrapper"> 
    <tr> 
     <td class="red"> 
      foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo 
     </td> 
     <td class="blue"> 
      foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo 
     </td> 
    </tr> 
</table> 
+0

Downvoter關心評論? – Khan 2012-03-29 15:23:57

+0

我沒有投票,但我同意使用表格不是創建網站佈局的好主意,因爲缺乏語義(「表是表是表是表是表」是表)。 使用div的'display:table'和'display:table-cell'應該可以實現相同的效果,儘管我仍然在用這些CSS屬性測試我的佈局。 – Timo 2012-03-29 17:01:09

+0

對,因此我在我的回答中發表了評論。但我仍然不明白爲什麼這應該是一個downvote。 – Khan 2012-03-29 17:04:02