Il s'agit d'un bogue signalé dans webkit (chrome/safari), les enfants des 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 touché (je ne peux pas tester dans IE pour le moment).
Solution possible :
- ajouter position:relative à #containment
- ajoute position:absolute à #containment-shadow-left
Le bogue n'apparaît pas lorsque l'élément intérieur a un positionnement absolu.
Voir http://jsfiddle.net/xrebB/
Edit le 10 avril 2014
Étant donné que je travaille actuellement sur un projet pour lequel je realmente ont besoin de conteneurs parentaux avec min-height
et que les éléments enfants héritent de la hauteur du conteneur, j'ai fait quelques recherches supplémentaires.
D'abord : Je ne suis plus très sûr que le comportement actuel du navigateur soit vraiment un bug. Les spécifications de CSS2.1 disent :
Le pourcentage est calculé par rapport à la hauteur de l'écran. bloc contenant la boîte générée. Si la hauteur du bloc contenant n'est pas spécifiée explicitement (c'est-à-dire qu'elle dépend de content height) et que cet élément n'est pas positionné de manière absolue, la valeur est égale à "auto".
Si je mets une hauteur minimale sur mon conteneur, je ne suis pas explicitement en spécifiant sa hauteur - donc mon élément devrait recevoir 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 sur display:table
con height:inherit
il se comporte exactement de la même manière que si je lui donnais un min-height
de 100 %. Et - plus important encore - si je règle l'élément enfant sur display:table-cell
il héritera parfaitement de la hauteur de l'élément conteneur - qu'elle soit de 100 % ou plus.
Full CSS :
html, body {
height: 100%;
margin: 0;
}
#container {
background: green;
display: table;
height: inherit;
width: 100%;
}
#content {
background: red;
display: table-cell;
}
La majoration :
<div id="container">
<div id="content">
<p>content</p>
</div>
</div>
Voir http://jsfiddle.net/xrebB/54/ .