ウェブページでよく見られる問題は、フローティングdivがコンテナの外に這うことです。オーバーフローが隠れている浮遊要素がコンテナをエスケープするのはなぜですか?
#wrapper{
border:1px solid red;
}
#wrapper div{
float:left;
font-size: 3em;
}
...
<div id="wrapper">
<div>Hello World</div>
</div>
ライブ例:http://jsfiddle.net/ugUVa/1/
この(明らかにdiv要素を挿入:両方)を修正する汚い方法はたくさんあり、私が見てきた
ずっとすっきり解決策は、ラッパーdivを設定しています隠さへオーバーフローのスタイル:
例:http://jsfiddle.net/ugUVa/2/
これはきれいに素敵で、ブラウザ間でうまく動作します追加のマークアップはありません。私は幸せですが、なぜそれが機能するのか分かりません!
私が見てきたすべてのドキュメントは、オーバーフローを示します。隠されたその子に合うように、親のサイズ変更、コンテンツのない隠すためである...
誰もが、この動作の説明を提供することはできますか?
おかげ
要素がフローティングされると、要素のサイズ計算のためにドキュメントフローから基本的に削除されます。コンテナは現在「空」なので、許容される最小サイズまで縮小されます。クリアリング要素を追加するか、オーバーフローを設定すると、コンテナはサイズ変更のために内部のすべてを考慮しなければなりません。 –
@MarcBは答えになるはずです。 – Christoph
私はあなたが解決策ではなく説明を求めていることを知っていますが、clearfix hackを使うこともできます。基本的に 'clear:both;' divと同じですが、追加のマークアップはありません。私の例を見てください:http://jsfiddle.net/TheNix/fSBhT/それに関する記事:http://nicolasgallagher.com/micro-clearfix-hack/ – Nix