Si tratta di un bug di webkit (chrome / safari) segnalato, i figli di genitori con altezza minima non possono ereditare la proprietà height: https://bugs.webkit.org/show_bug.cgi?id=26559
Apparentemente anche Firefox è interessato (al momento non è possibile eseguire il test in IE)
Possibile soluzione alternativa:
- aggiungi posizione: rispetto a #contenimento
- aggiungi posizione: assoluto in # contenimento-ombra-sinistra
Il bug non mostra quando l'elemento interno ha un posizionamento assoluto.
Vedi http://jsfiddle.net/xrebB/
Modifica il 10 aprile 2014
Dato che al momento sto lavorando a un progetto per il quale ho davvero bisogno di contenitori padre min-heighte di elementi figlio che ereditano l'altezza del contenitore, ho fatto ulteriori ricerche.
Primo: non sono più così sicuro che l'attuale comportamento del browser sia davvero un bug. Le specifiche CSS2.1 dicono:
La percentuale viene calcolata rispetto all'altezza del blocco contenitore della casella generata. Se l'altezza del blocco contenitore non viene specificata in modo esplicito (cioè dipende dall'altezza del contenuto) e questo elemento non è posizionato in modo assoluto, il valore viene calcolato in "auto".
Se metto un'altezza minima sul mio contenitore, non sto specificando esplicitamente la sua altezza, quindi il mio elemento dovrebbe ottenere autoun'altezza. Ed è esattamente quello che fanno Webkit - e tutti gli altri browser.
In secondo luogo, la soluzione alternativa che ho trovato:
Se imposto il mio elemento contenitore su display:tablecon height:inheritesso si comporta esattamente come se gli dessi un valore min-heightdel 100%. E, cosa ancora più importante, se imposto l'elemento figlio sudisplay:table-cell esso erediterà perfettamente l'altezza dell'elemento contenitore, sia esso pari o superiore al 100%.
CSS completo:
html, body {
height: 100%;
margin: 0;
}
#container {
background: green;
display: table;
height: inherit;
width: 100%;
}
#content {
background: red;
display: table-cell;
}
Il markup:
<div id="container">
<div id="content">
<p>content</p>
</div>
</div>
Vedi http://jsfiddle.net/xrebB/54/ .
display:flexedflex-direction:columne dare al bambinoflex:1.