IE ダブルマージンフロートバグをFix

Internet Explorer 5、5.5、6にもっとも不可解とも言えるバグがある。
それが、ダブルマージンフロートバグ。

ダブルマージンフロートバグとは?

floatした要素に対して、同じ方向にmarginを与えると、marginが2倍になってしまう。
というバグ。

図解すると上記の様になる。

.content {
    float: left;
    margin-left: 30px;
}

というようにすると、IE5〜6では

.content {
    float: left;
    margin-left: 60px;
}

というように解釈される、ということだ。

見落としがちなのは、margin: 10px 0 0 30px;というように省略式で書いた場合。
もちろん、この場合もmargin-left部分の値は倍になってしまう。

修正方法

修正は意外と簡単。

.content {
    float: left;
    margin-left: 30px;
}

この例の場合なら、

.content {
    float: left;
    margin-left: 30px;
    display: inline;
}

というように、display: inline;を追加すれば解決する。

Creative Commons License