以下は、display: table
およびdisplay: table-cell
CSS宣言を使用した2列のマークアップです。
.table {
display: table;
}
.cell {
border: 2px solid black;
vertical-align: top;
display: table-cell;
}
.container {
height: 100%;
border: 2px solid green;
}
<div class="table">
<div class="cell">
<p>Text
<p>Text
<p>Text
<p>Text
<p>Text
<p>Text
<p>Text
<p>Text
</div>
<div class="cell">
<div class="container">Text</div>
</div>
</div>
ただし、.container
ブロックは親セルを垂直方向に埋めません。 JsFiddleの例を次に示します。 http://jsfiddle.net/MGRdP/2 。
私が持っているもの| 必要なもの
JSソリューションを提案しないでください。
%
を使用して高さまたは幅を設定する場合は、常に親要素の幅/高さも設定します。
.table {
display: table;
height: 100%;
}
.cell {
border: 2px solid black;
vertical-align: top;
display: table-cell;
height: 100%;
}
.container {
height: 100%;
border: 2px solid green;
-moz-box-sizing: border-box;
}
<div class="table">
<div class="cell">
<p>Text
<p>Text
<p>Text
<p>Text
<p>Text
<p>Text
<p>Text
<p>Text
</div>
<div class="cell">
<div class="container">Text</div>
</div>
</div>
height: 100%;
内のdivにoverflow:auto;
および.cell
を設定します
table{
height:1px;
}
table > td{
height:100%;
}
table > td > .inner{
height:100%;
}
動作確認済み:
JsFiddleに加えて、クロスブラウザー(IE11、Chrome、Firefox)にしたい場合は、ugいハックを提供できます。
height:100%;
の代わりに、height:1em;
に.cell
を配置します。
これはまさにあなたが望むものです:
HTML
<div class="table">
<div class="cell">
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
</div>
<div class="cell">
<div class="container">Text</div>
</div>
</div>
CSS
.table {
display: table;
height:auto;
}
.cell {
border: 2px solid black;
display:table-cell;
vertical-align:top;
}
.container {
height: 100%;
overflow:auto;
border: 2px solid green;
-moz-box-sizing: border-box;
}
テーブルセルの位置を相対的にし、上/右/下/左をすべて0pxに設定して、内側のdiv位置を絶対にします。
.table-cell {
display: table-cell;
position: relative;
}
.inner-div {
position: absolute;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
}
.table
と.cell
height:100%;
を定義します
.table {
display: table;
height:100%;
}
.cell {
border: 1px solid black;
display: table-cell;
vertical-align:top;
height: 100%;
}
.container {
height: 100%;
border: 10px solid green;
}
デモ (