http://www.nishishi.com/blog/2006/02/ie_padding.html
http://hinannjo.web.fc2.com/data/laboratory/bug001.html
widthとpadding/borderを一緒に指定しない
というわけで回避方法2。
ボックスを2つ用意して、外側のボックスにwidthを、内側のボックスにpadding/borderを指定するやり方。
XHTML
1.
<
div
class
=
"c1"
>
2.
<
div
class
=
"c2"
>
3.
この岸辺露伴が最も好きな事のひとつは、自分で強いと思ってるやつに「NO」と断ってやる事だ・・・
4.
</
div
>
5.
</
div
>
css
1.
div.c
1
{
2.
width
:
310px
;
3.
}
4.
div.c
2
{
5.
padding
:
20px
;
6.
border
:
10px
#fff
solid
;
7.
}
外側のボックス(div.c1)に全体の幅であるwidth:310pxだけを指定して、paddingとborderは指定しない。
そして内側のボックスにpadding:20pxとborder:10px #fff solidを指定する。
余白の部分をpaddingじゃなくてmarginにすると、marginの相殺が起きたりするのでpaddingの方が無難。
こんな感じにwidthとpadding/borderを一緒に指定しないようにすれば、標準モードでも互換モードでもボックス全体の幅が310px、本文の範囲が250pxと見てくれが同じになる。
しかもxml宣言も書けるし、IE6が後方互換モードになろうがそんなこと気にしなくてもいいという。
cssハックでIE6にだけ別のスタイル当てようとしてる人や、仕方なくxml宣言スルーしてたxhtml使いの人はこの方法マジオススメ。