IEでフロートさせたボックスのマージンが倍になるバグ

Posted at 2005-04-04T17:33:00+09:00 in Web Design

WindowsのIE5.5や6など(5とか5.01は知らない)にはfloatさせたボックスへ指定した左右のmarginが正常に反映されない(倍になる)というバグがあります。最近はfloatを使ってゴニョゴニョする機会も多いと思うので厄介に考えている人も多いでしょう。実はdisplay: inline;とか指定してやると回避できちゃったりとかします。ネタ元はThe IE Doubled Float-Margin Bugだったような気がしますが、別なところで見つけたような気もする。

バグの状況自体は上記CSSバグリストのURLを参照していただければわかりやすいです。と言いつつ回避手段の使用前/後を並べてみたHTMLを用意してみました。IEで見れば一目瞭然で、一つ目のコンテナ内のフロートさせたボックスの左のマージンは倍(80px)になっているのに対し、二つ目のコンテナ内のフロートさせたボックスの左のマージンは指定どおり(40px)です。

コードはfloat: left;(float: right:)と同時にdisplay: inline;を指定するというだけで、HTMLに特に手を加える必要も、IE用にCSSコードを切り分ける必要もありません。

#floatbox {
  margin-left: 40px;
  float: left;
  width: 160px;
  display: inline;
}

FirefoxやOperaではCSS2の仕様に従ってfloatを指定した要素へのdisplayの指定を無視してくれる(See Also: Positioning the float: the 'float' property)ということもあるので、将来的にもdisplay: inline;という意味の無い指定による誤作動は起こらないんじゃないかなと。

バッド・ノウハウ。

Recent entries from same category

このエントリと同じカテゴリに投稿された最近10件のエントリです。

  1. CSSグラデーションのちょっとしたテクニック #2
  2. google-code-prettifyを導入した
  3. CSSグラデーションのちょっとしたテクニック #1
  4. YUI 3: CSS Resetの問題
  5. Pure CSSな吹き出し
  6. リデザインとborder-radiusとtext-shadow
  7. 404エラーページの改善
  8. HTTPエラーページ
  9. 無料で400以上のフォントを手に入れよう!
  10. 安全な@font-faceの書き方(抄訳)

Comments

JavaScriptに対応、または有効な環境の場合、ここにこのエントリへのはてなブックマークコメントが表示されます。