これは、報告されているWebkit(chrome / safari)のバグです。min-heightを持つ親の子は、heightプロパティを継承できません:https ://bugs.webkit.org/show_bug.cgi?id=26559
どうやらFirefoxも影響を受けるようです(現時点ではIEでテストできません)
可能な回避策:
- 位置を追加:#containmentを基準
- #containment-shadow-leftにposition:absoluteを追加します
内部要素が絶対位置にある場合、バグは表示されません。
http://jsfiddle.net/xrebB/を参照してください
2014年4月10日に編集
現在、の親コンテナーとコンテナーの高さを継承する子要素が本当に必要なプロジェクトに取り組んでいるためmin-height
、さらに調査を行いました。
まず、現在のブラウザの動作が本当にバグなのかどうか、もうよくわかりません。CSS2.1仕様は言う:
パーセンテージは、生成されたボックスの包含ブロックの高さに対して計算されます。包含ブロックの高さが明示的に指定されておらず(つまり、コンテンツの高さに依存している)、この要素が絶対的に配置されていない場合、値は「自動」に計算されます。
コンテナに最小高さを設定した場合、その高さを明示的に指定していないため、要素のauto
高さを取得する必要があります。そして、まさにそれがWebkit(および他のすべてのブラウザー)が行うことです。
次に、私が見つけた回避策:
コンテナ要素をdisplay:table
with に設定すると、100%のheight:inherit
場合とまったく同じように動作しmin-height
ます。そして、さらに重要なことですが、子要素をdisplay:table-cell
それに設定すると、100%以上であっても、コンテナ要素の高さを完全に継承します。
完全なCSS:
html, body {
height: 100%;
margin: 0;
}
#container {
background: green;
display: table;
height: inherit;
width: 100%;
}
#content {
background: red;
display: table-cell;
}
マークアップ:
<div id="container">
<div id="content">
<p>content</p>
</div>
</div>
http://jsfiddle.net/xrebB/54/を参照してください。
display:flex
とflex-direction:column
、子供を与えますflex:1
。