浮いている子div
sに基づいて親div
の高さを自動成長させることはできません。すべての子は、水平方向にスペースを取り、次の行に折り返すために浮いています。変動する子の数は変化する可能性があり、親はその高さを自動サイズ調整する必要があります。 (親div
は、すべての浮動div
sの背景として機能します)。また、プッシュダウンする必要がある親div
の下に2番目のdiv
があるため、フローティングdiv
sの下にあります。
ソリューションがIEで機能することは非常に重要です。
親コンテナに浮動子のみがある場合、高さはありません。次のCSSを親コンテナに追加すると役立ちます。
.parent {
overflow:hidden;
width: 100%;
}
詳細については、この記事をお読みください: http://www.quirksmode.org/css/clearing.html 。
最後の子の後にフローターをクリアするdivを挿入できます。
HTML:
<div style="clear: both"></div> <!-- This goes after the last floated element - no floating elements are allowed on either side of this. -->
親の高さが折りたたまれるclear
フローティング要素が必要です。
現在受け入れられている答えは正しいですが、通常、ラップする親要素に clearfix hack またはoverflow: hidden
を適用して、マージンが期待どおりに機能し続けるように、フロートをクリアすることをお勧めします。空のHTML要素を取り除きます。
overflow
-メソッド:CSS:
.wrap { overflow: hidden }
.box { float: left; }
マークアップ:
<div class="wrap">
<div class="box">
Content
</div>
<div class="box">
Content
</div>
</div>
clearfix
-メソッド:CSS:
.cf:before,
.cf:after {
content: " ";
display: table;
}
.cf:after { clear: both; }
.cf { *zoom: 1; }
.box { float: left; }
マークアップ:
<div class="wrap cf">
<div class="box">
Content
</div>
<div class="box">
Content
</div>
</div>
含むdivでclearfixテクニックを使用する必要があります
http://www.webtoolkit.info/css-clearfix.html
これにより、余分なマークアップを追加する必要がなくなります。
親要素にoverflow
cssプロパティを追加すると、問題が修正されます(フロートをクリアするための空の&ugいdiv要素は不要です):
.parentelement {
overflow:auto;
display: block;
width: 100%;
}
一部のブラウザではこれらのプロパティを定義する必要があるため、displayおよびwidthプロパティを追加しました。
ドキュメントのフローからフロートが削除され、親のコンテンツに高さが自動的に追加されないように、親にclearfixを適用する必要があります。 Clearfixは、最後にフロートした子をクリアするのに十分な高さまで親が伸びるように指示します。 この方法 は十分に確立されており、ブラウザー間で機能します。