フロートをクリアする必要があります。これには 3 つの方法があります。
伝統的
空の要素を追加してフロートをクリアするだけです。
<div style="background-color:pink">
<div style="float:left;">...</div>
<div style="float:left; height:200px;">...</div>
<div style="clear:left"></div>
</div>
あまり良くない余分なマークアップを追加する必要があります。
オーバーフロー
少し現代的な手法は、オーバーフローを追加することです。auto
またはの値を持つことができますhidden
。
<div style="background-color:pink; overflow:auto;">
<div style="float:left;">...</div>
<div style="float:left; height:200px;">...</div>
</div>
このソリューションにはいくつかの欠点があります (以下を参照)。
マイクロクリアフィックス
オフセットなどを使用して要素から何かを配置する必要があるため、オーバーフロー手法を使用できない場合があります。次に、Nicolas Gallagher の micro-clearfixを使用できます。
.cf:before,
.cf:after {
content: " "; /* 1 */
display: table; /* 2 */
}
.cf:after {
clear: both;
}
/**
* For IE 6/7 only
* Include this rule to trigger hasLayout and contain floats.
*/
.cf {
*zoom: 1;
}
これにより、コンテナー要素にクラス.cf
を追加するだけで問題なく動作し、overflow メソッドによる欠点がなく、他の余分なマークアップを追加する必要もありません。これは優れたソリューションであり、クラスを追加するだけで必要な場所で使用できます。
この最後の方法をお勧めします。とてもきれいでエレガントです。