通常、回り込みの解除には

<br clear="all" />

を使います。 しかし、上記の場合不要な改行が入ってしまいます。 それならばと、

<div class="clear"></div>

といった具合に、ボックスにclearプロパティを指定して回り込みを解除します。
ですが空のボックスは文法上よろしくない。 そこで登場するのがこのClearFix。
:after擬似要素でclearプロパティを指定した不可視ボックスを利用するというもの。

/* Start. Clearfix */
.box:after {
	clear: both;
	content: ".";
	display: block;
	font-size: 0.1em;
	height: 0;
	line-height: 0;
	visibility: hidden;
}
.box {
	display: inline-block;
	min-height: 1%;
}
* html .box {
	height: 1%;
}
.box {
	display: block;
}
/* End. Clearfix */

追記:2012/3/2 新しいClearfixが考案されたようです。

div#hoge:before,
div#hoge:after {
	content: "";
	display: table;
}
div#hoge:after {
	clear: both;
}
div#hoge {
	zoom: 1;
}