CSS実験室

clearfixの決定版を作る -Mac IE編-

前回のIE編の冒頭で、私は「CSS自体の正しさとか美しさを優先し、そのためには古いバージョンのブラウザは犠牲になってもしょうがない」と書いた。その流れでいえば、マイクロソフトもサポートを打ち切ったMac版IEにそもそも対応する必要があるのか、IE編でWin版IE5.0を無視したのだから、Mac版IEも無視していいのではないか、という疑問が当然わく。至極もっともなことである。が、しかし、それで終わってしまっては本稿自体が成り立たない。しぶしぶではあるが、Mac版IE(5.x)でfloatをクリアする方法を探ってみよう。結論はもうすでに出ている。以下の通りである。

.clearfix:after { content: url(pixel.gif); display: block; clear: both; height: 0; } .clearfix { display: inline-block; } /* Mac版IEを除外 \*/ .clearfix { display: block; } /* */

前回、触れたように、「display: inline-block」にはMac版IEでもfloatクリア効果がある。しかし、Win版IEと違って、「display: block」に戻すとfloatクリア効果も消えてしまうので、その部分にバックスラッシュハックを用い、適用対象からMac版IEを除外する。結局、最後にハックに手を出してしまい、スッキリしない気持ちは残るが、これで、晴れてMac版IEでもfloatをクリアできるようになったわけだ。

ただし、気を付けなければならないのは、このclearfixを適用させた要素は、Mac版IEではインライン的に扱われてしまうこと。例えば、margin: autoでのセンター合わせなどはできなくなる。したがって、div要素などに一律に指定するのでなく、上記ソースのようにクラスとして用意し、floatクリアが必要な要素にだけ適用させるようにしたほうがいい。でないと、Mac版IEで予期せぬ事態を引き起こす。

もし、インライン的に扱われることを嫌うなら、ソースとしてはますます汚くなるが、下記のように「overflow: hidden」をMac版IEにだけ適用させる方法もある。

.clearfix:after { content: url(pixel.gif); display: block; clear: both; height: 0; } .clearfix { display: inline-block; } .clearfix { display: block; } /* Mac版IEのみに適用 \*//*/ .clearfix { overflow: hidden; } /* */

(last modified: 09/12/2008)

TrackBack

このエントリーのトラックバックURL:
http://norisfactory.com/mt/mt-tb.cgi/47

Post a comment









search

contents
CSS実験室
CSSトラブルシューティング
-- background関連 --
-- float関連 --
-- ソースの記述 --
-- ボックス関連 --
-- 定義リスト関連 --
-- 標準モードと互換モード --
feed
Creative Commons License

このサイトは、Creative Commons License のもとにライセンスされています。

Powered by
Movable Type 3.37