親要素にfloatが使えない場合の解決策として使われる超有名ハック。
これ考えた人尊敬するわ。

このハックを使う主なケース。

  • margin:0 auto;で中央配置にしてるブロック要素の中でfloat指定するものを配置する
    (親要素にfloat指定することが出来ない状態)
  • liやdt、dlにfloatかけたから手っ取り早くクリアしたい
  • clear:bothとか置けない。もしくは置くのが面倒。置くと美しくない

大概は親要素にfloat指定するか、下にclear指定しとけばおkだけど、たまにどちらも使えない場合がある。そんなときはこのハックを思い出すと幸せになれる。
使用するとIEで妙な隙間が出来る場合があるので注意。多分バグだろうけど。

div:after {
content:".";
height:0px;
clear:both;
display: block;
visibility:hidden;
}

IE7は未対応なので以下2つのうちどちらかを使う。
ただし、display:inline-blockはsafariも適用されてしまうので注意。

div { display:inline-block; }
div { zoom:100%; }

zoomはFirebug等のバリデータでエラーになる。
display:inline-block;を使うなら、Safari用にFilter使っておくといいと思います。

*+html div { display:inline-block; }

MAC IE5はどれにも対応していない。
NN7.1はOK