□IE 6で泣かないための、9つのCSSハック(1/3) - @IT
現場のプロから学ぶXHTML+CSS
著者:益子 貴寛
販売元:毎日コミュニケーションズ
発売日:2008-11-11
おすすめ度:
レビューを見る
実はこの記事には直接の解決法はなかったのだが、これがきっかけで「Internet Explorer 6」対策に踏み切った。
今の段階でヘッダ内のブロック要素にマイナスマージンを使っている部分が怪しいと思われたのでそのあたりを探ってみると以下の記事を発見。
□ネガティブマージンをIE6.0でも使う: ポルカの日記 | CSSベースのHTMLレイアウト入門講座
【まとめ】マイナスマージンのことをネガティブマージンって言うんですね。初めて聞きました。
ネガティブマージンを使えば、横幅を固定したレイアウト領域をはみだしてコンテンツ(画像など)を表示させることができる。ただし、IE6.0では「position: relative;」の併記が必要。
ざっとしか読んでないので的外れだったかもしれないが、まずはこの記事にヒントを得てマイナスマージン(ネガティブマージン)の入っているブロック要素に「position: relative;」をつけてみた。
しかし変わらず。
□IE6でネガティブマージンを指定した画像 - @inつくば - つくばで働くデザイナーが日々徒然、気の向く侭に綴るブログ。
ネガティブマージンを指定すると、IE6では枠からはみ出した部分が表示されません。とのことを後で知り、やっぱり的外れだったことに気づく。
が、「position: relative;」を指定すると、きちんとはみ出した部分が表示されます。
他にも
□IE6でよく遭遇するCSSのバグとその解決方法 | コリス
マージンが2倍になってしまうバグは、「display:inline;」で解決します。なんてのも試してみるがダメ。
このあたりはfloatした要素に対するバグだったようです。
で、最終的に選んだのは無敵のこちら。
□CSSハック - ブラウザによって適用させるCSSを振り分け - 10press
CSSの各要素の先頭に「* html」と入れることでIE6だけに反映されるCSSを作ることができるそうです。
対象 書き方 IE6のみ適用 * html element { } IE7のみ適用 *:first-child + html element { } IE6を除外(モダンブラウザ) html > body element { } IE6、IE7を除外(モダンブラウザ) html>/**/body element { } Operaに適用 * + html:first-child body { } Safariに適用 /**/ html:6irst-child { } /* end */ Mac IE適用 /**//*/ selector { property: value; }/**/ IE 5〜IE 7に適用 selector { *property: value; } IE 5〜IE 6に適用 selector { _property: value; }
これを使って調整。あわせて「position: relative;」や「display:inline;」も使いなんとかIE6でもまともに見えるようになりました。
【修正前】
【修正後】
実はまだちょっとだけ不具合あるんだけどその辺りはそのうちこっそりと。。
でも、一応これでほぼ100%近くのユーザーがまともにこのブログを見れるようになったので良しとします。
それ以前のブラウザはもうしらんです。ごめんなさい。