何らかの理由で、ネストされた要素はmin-height
、特定のブラウザーで祖父母の高さを継承しません。
<html style="height: 100%">
<body style="min-height: 100%">
<div style="min-height: 100%; background: #CCC">
<p>Hello World</p>
</div>
</body>
</html>
さまざまなブラウザー バージョン間であまりテストを行っていませんが、Chrome 26 と Opera 12.14 では、期待どおりに表示され、左上隅に Hello World が表示され、画面の大部分が灰色の背景で覆われています。
ただし、IE 9 と Firefox 20 では、灰色の背景はテキストの 1 行の高さにすぎません。
さらにテストし、次を追加します。
position: relative
div を変更する
min-height: inherit
と、div も何も変更されず
position: absolute
、幅も変更されませんがheight
、背景がテキストのみをカバーする IE 9 を除く上記のすべてのブラウザーで 100% です。
position: fixed
に似ていposition: absolute
ますが、IE 9 が幅 100% の元の動作に戻る点が異なります。
float: left
に似ていますがposition: absolute
、Firefox 20 では背景も縮小されてテキストのみが表示されます。
http://www.w3.org/TR/CSS2/visudet.html#the-height-propertyから:
包含ブロックの高さが明示的に指定されておらず (つまり、コンテンツの高さに依存する)、この要素が絶対位置に配置されていない場合、値は「auto」と計算されます。
min-height
明示的と見なされますか?それがブラウザ間の混乱だと思います。ではposition: absolute
、Firefox が修正され、IE 9 だけが予期しない動作をします (これは IE であるため、それほど予期しないものではありません)。
主要なブラウザ間でこれを一貫させることは可能ですか?
JavaScript を必要とする回答や、固定の高さの本文を提案しないでください。それらが可能な回避策であることは知っていますが、私が達成しようとしているものではありません。を使用position: absolute
すると、フローから要素が引き出されるため、レイアウトも壊れます。動的にサイズ変更された要素の下に配置するには、唯一の回避策は JavaScript です。