Voici le balisage à 2 colonnes utilisant les déclarations CSS display: table
Et display: table-cell
:
.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>
Mais le bloc .container
Ne remplit pas la cellule parent verticalement. Voici un exemple sur JsFiddle: http://jsfiddle.net/MGRdP/2 .
Ce que j'ai | Ce dont j'ai besoin
S'il vous plaît, ne proposez pas la solution JS.
Quand vous utilisez %
pour définir les hauteurs ou les largeurs, définissez toujours les largeurs/hauteurs des éléments parents également:
.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>
ensemble height: 100%;
et overflow:auto;
pour div inside .cell
table{
height:1px;
}
table > td{
height:100%;
}
table > td > .inner{
height:100%;
}
Confirmé de travailler sur:
En plus de jsFiddle, je peux offrir un hack moche si vous le souhaitez afin de le rendre multi-navigateur (IE11, Chrome, Firefox).
Au lieu de height:100%;
, mettez height:1em;
sur le .cell
.
C'est exactement ce que vous voulez:
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;
}
Définissez la position relative de la table, puis indiquez la position de la division intérieure comme absolue, avec tous les réglages haut/droite/bas/gauche définis sur 0px.
.table-cell {
display: table-cell;
position: relative;
}
.inner-div {
position: absolute;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
}
Définissez votre .table
et .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;
}