hauteur: 100% pour les <div> dans un <div> avec display: table-cell
Voici 2 colonne de balisage à l'aide de display: table
et display: table-cell
déclarations CSS:
CSS:
.table {
display: table;
}
.cell {
border: 2px solid black;
vertical-align: top;
display: table-cell;
}
.container {
height: 100%;
border: 2px solid green;
}
HTML:
<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 .container
bloc ne doit pas remplir de cellule-mère à la verticale. 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 propose pas de JS solution.
- Le problème est que vous utilisez
height: 100%;
pour élément enfant dont le parentheight
est fixé àauto
, donc afin de remédier à ce problème, affectezheight: 100%;
à tous les parents, et si non, que l'utilisation de certains fixeheight
pour.cell
- +1 pour pas de JS solution.
Vous devez vous connecter pour publier un commentaire.
Lorsque vous utilisez
%
pour le réglage des hauteurs ou largeurs de toujours définir les largeurs/hauteurs de parent éléments:CSS:
HTML:
-moz-box-sizing: border-box;
à la.container
à le faire aussi fonctionner correctement sur FF..container
div, c'était d'avoir une hauteur de plus de 100%. Corrigé et mis à jour le jsfiddle dans ma réponseheight: 100%; min-height: 1px;
à ladisplay: table
classe d'aider IE 11.ensemble
height: 100%;
etoverflow:auto;
pour les div à l'intérieur de.cell
overflow:auto;
a été la clé pour moi. Merci!overflow: auto
?Confirmé travailler sur:
td { 100% }
, juste letable
et.inner
styles a fonctionné pour moi.En Plus de jsFiddle, je peux offrir un vilain hack si vous le souhaitez afin de faire de la cross-browser (IE11, Chrome, Firefox).
Au lieu de
height:100%;
, mettreheight:1em;
sur le.cell
.C'est exactement ce que vous voulez:
HTML
CSS
-moz-box-sizing: border-box;
pour.container
est là pour ça 🙂Faire le tableau de la cellule de position relative, et ensuite faire l'intérieur de la div en position absolute, avec haut/droite/bas/gauche tous ensemble à 0px.
.inner-div
marges, ou il peut avoir débordant de contenu?Définir votre
.table
et.cell
height:100%;
Démo