有許多解決方案,對於這個問題,包括OneTrueLayout技術,人造列技術,CSS表格顯示技術並且還有一個分層技術。
一種用於同樣高度-ED列的解決方案是CSS Tabular Display Technique這意味着使用顯示:表特徵。 它適用於Firefox的2+,Safari 3及,歌劇院9+和IE8。
爲CSS以表格顯示的代碼:
的HTML
<div id="container">
<div id="rowWraper" class="row">
<div id="col1" class="col">
Column 1<br />Lorem ipsum<br />ipsum lorem
</div>
<div id="col2" class="col">
Column 2<br />Eco cologna duo est!
</div>
<div id="col3" class="col">
Column 3
</div>
</div>
</div>
的CSS
<style>
#container{
display:table;
background-color:#CCC;
margin:0 auto;
}
.row{
display:table-row;
}
.col{
display: table-cell;
}
#col1{
background-color:#0CC;
width:200px;
}
#col2{
background-color:#9F9;
width:300px;
}
#col3{
background-color:#699;
width:200px;
}
</style>
即使有與自動一個問題它可以擴大表格單元的寬度通過在table-cell中插入另一個div並給定一個固定寬度來解決問題。無論如何,在使用非常長的單詞(我懷疑任何人會使用a,比方說600px長的單詞)或者某個div的寬度大於表格單元格寬度的情況下,寬度會發生過度膨脹。
Faux Column Technique是此問題最流行的解決方案,但它有一些缺點,例如,如果要調整列的大小並且它不是一個優雅的解決方案,則必須調整背景平鋪圖像的大小。
OneTrueLayout Technique包括創建一個極大高度的填充底部,並通過應用相同巨大值的負邊距底部將真實邊界位置置於「正常邏輯位置」並將其隱藏由溢出填充創建的範圍:隱藏應用於內容包裝。一個簡單的例子是:
HTML文件:
<html><head>
<style>
.wraper{
background-color:#CCC;
overflow:hidden;
}
.floatLeft{
float:left;
}
.block{
padding-bottom:30000px;
margin-bottom:-30000px;
width:100px;
background-color:#06F;
border:#000 1px solid;
}
</style>
</head>
<body>
<div class="wraper">
<div class="block floatLeft">first col</div>
<div class="block floatLeft">
Second col<br />Break Line
</div>
<div class="block floatLeft">Third col</div>
</div>
</body>
</html>
的分層技術必須是一個非常整潔的解決方案,涉及的div的withing主相對定位包裝DIV絕對定位。它基本上由許多子div和主div組成。主分區勢在必行位置:相對它的css屬性集合。這個div的孩子都是勢在必行位置:絕對。孩子們必須頂部和底部設置爲和左右尺寸設置,以適應每個另一列。例如,如果我們有兩列,一列寬100px,另一列200px,考慮到我們希望左側爲100px,右側爲200px,則左列必須有{left:0; right:200px} and right column {left:100px; }
在我看來,自動化高度容器內未實現的100%高度是一個主要缺點,W3C應考慮修改此屬性。
其他資源:link1,link2,link3,link4,link5 (important)
您是否找到了解決此問題的解決方案?我有點陷入同樣的問題。 – 2012-03-18 21:05:17
設置百分比寬度時,它是父元素的百分比,而不是整個屏幕。唯一的例外是位於最上面的''元素。 – starbeamrainbowlabs 2012-07-29 08:46:27