浮動要素は通常のフローから削除されます。したがって、親コンテナーはコンテンツの高さを計算できません。これを修正するには、フロートをクリアする必要があります。これは、基本的にフローに戻すことを意味します。
Nicholas Gallagher は、きちんとした小さな clearfix トリックを作成しました。基本的に、クラスを親要素に追加するだけで、含まれているすべてのフロートがクリアされます。
http://nicolasgallagher.com/micro-clearfix-hack/
/**
* For modern browsers
* 1. The space content is one way to avoid an Opera bug when the
* contenteditable attribute is included anywhere else in the document.
* Otherwise it causes space to appear at the top and bottom of elements
* that are clearfixed.
* 2. The use of `table` rather than `block` is only necessary if using
* `:before` to contain the top-margins of child elements.
*/
.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;
}