floatした部分のborderが消えるIEのバグ
私、スタイルシートに関してはちょっとだけ自信を持ってるんですが、それでも毎度毎度FirefoxとIEとの表示のされ方の違いに悩まされます。
昨日はある方からの依頼を受け、HTML&CSSのコーディング作業を行っていたわけですが、「floatさせた部分だけ両サイドのborderが消えちゃうIEのバグ」にぶちあたり、その解決だけで数時間費やしてしまいましたorz
無駄に時間を使わされて悔しいので、その解決方法をアップしておこうと思います。
例えば、

CSSでこんな感じのレイアウトを組んだとします。そのときCSSはと言いますと、
body { text-align:center; }
#container { margin:0 auto; text-align:left; }
#left { width:**px; float:left; }
#right { width:***px; float:right; }
ってな感じ。これでレイアウトはばっちりなんですが、外側の#containerの左右にborderを指定した場合、こんな感じで表示されちゃうんです。。。

floatで左右に寄せた部分のborderがスッポリ消えちゃうんですよ。なんちゅーバグじゃ…。Firefoxならちゃんとしっかり表示されるのに…。だからIEはイヤなのさ。
これが自分のサイトならborderを画像で作ってbackgroundで表示させるとか、border自体のないデザインを考えるとかで回避できるんですが、今回は人から依頼された案件、無駄な画像は使いたくないですし、そもそもIEで表示されないのは困ります。
で、あれこれ調べてみた結果、スタイルシートを次のようにすることで回避できることが分かりました。
body { text-align:center; }
#container { width:***px; margin:0 auto; text-align:left; }
#left { width:***px; float:left; }
#right { width:***px; float:right; }
赤字で示したとおり、floatさせるボックスの親ボックス(上の例で言えば#container)の幅(width)を指定してあげると、さっきまで消えてたborderがアラ不思議。ちゃんと表示されました^^…..(この解決策が見つかるまで費やした時間の長かったこと長かったこと…orz)
サイト全体のレイアウトの場合、親ボックスとなる大外枠は大抵幅を指定してることと思いますんで、このようなバグに遭遇することも滅多になさげですが、サイト内の何気ない部分だけさらに2段に分ける場合など、その外枠には幅を指定しないことも多い(divタグは幅を指定しなければ自動的に100%になるから)と思われ、そんなときにこのバグに悩まされることになります。
「floatを使う場合、その外枠にはwidthを指定」
コレ、覚えておきましょう^^
8 Comments
うかさん、はじめまして。
私も最近MTでサイトを作るようになって、IEとFirefoxの表示の違いにいろいろと悩まされております。
表示の違いって素人の私にとっては難しくてちんぷんかんぷんですが、少しずつ少しずつ勉強しています。
うかさんのサイトにはいろいろと助けていただいております♪
これからもいろいろと参考にさせて頂きますので、いろいろと宜しくお願いします^^
そらた
Posted at 2007/01/7
>そらたさん
はじめまして。「サイト向上戦略会議室」では以前からお名前を拝見させていただいておりました^^
ホント、ブラウザによる表示のずれってヤんなっちゃいますよね^^;
今後もバグ対策みたいなものが分かったらブログにアップしたいと思います。
では、今後ともよろしくお願いいたします^^
うか
Posted at 2007/01/7
すごくためになりました。
悩んでいたことが解決してスッキリしています。
ありがとうございます。
ゴンシ
Posted at 2007/01/26
>ゴンシさん
無事解決できてよかったですね^^
お役に立てたようでコチラも嬉しいです♪
うか
Posted at 2007/01/26
はじめまして!
IEでの表示が崩れてて困って検索してたらこちらの記事を発見しました。
そして、無事に解決しました!本当にありがとうございます!
miharuco
Posted at 2007/02/17
>miharucoさん
はじめまして^^
こういったメモ記事でも人のお役に立てるんだなぁと、私の方も喜んでおります♪
うか
Posted at 2007/02/19
どうしたものかと悩んでいましたが見事に解決。助かりました。
通りすがり
Posted at 2008/04/28
> 通りすがりさん
お役に立てたようで何よりです^^
うか
Posted at 2008/05/12
▲ページトップに戻る