Il s'agit d'un bug Webkit (chrome / safari) signalé, les enfants de parents avec min-height ne peuvent pas hériter de la propriété height: https://bugs.webkit.org/show_bug.cgi?id=26559
Apparemment, Firefox est également affecté (impossible de tester dans IE pour le moment)
Solution de contournement possible:
- ajouter une position: par rapport à #containment
- ajouter la position: absolue à # contenir-ombre-gauche
Le bogue ne s'affiche pas lorsque l'élément interne a un positionnement absolu.
Voir http://jsfiddle.net/xrebB/
Edit le 10 avril 2014
Comme je travaille actuellement sur un projet pour lequel j'ai vraiment besoin de conteneurs parents min-height
et d'éléments enfants héritant de la hauteur du conteneur, j'ai fait quelques recherches supplémentaires.
Premièrement: je ne sais plus si le comportement actuel du navigateur est vraiment un bogue. Les spécifications CSS2.1 disent:
Le pourcentage est calculé par rapport à la hauteur du bloc contenant de la boîte générée. Si la hauteur du bloc conteneur n'est pas spécifiée explicitement (c'est-à-dire qu'elle dépend de la hauteur du contenu) et que cet élément n'est pas positionné de manière absolue, la valeur est calculée sur «auto».
Si je mets une hauteur min sur mon conteneur, je ne spécifie pas explicitement sa hauteur - donc mon élément devrait avoir une auto
hauteur. Et c'est exactement ce que Webkit - et tous les autres navigateurs - font.
Deuxièmement, la solution de contournement que j'ai trouvée:
Si je règle mon élément conteneur display:table
avec, height:inherit
il agit exactement de la même manière que si je lui donnais un min-height
100%. Et - plus important encore - si j'y display:table-cell
attribue l' élément enfant, il héritera parfaitement de la hauteur de l'élément conteneur - qu'il soit de 100% ou plus.
CSS complet:
html, body {
height: 100%;
margin: 0;
}
#container {
background: green;
display: table;
height: inherit;
width: 100%;
}
#content {
background: red;
display: table-cell;
}
Le balisage:
<div id="container">
<div id="content">
<p>content</p>
</div>
</div>
Voir http://jsfiddle.net/xrebB/54/ .
display:flex
etflex-direction:column
et donner à l'enfantflex:1
.