IEだけレイアウト崩れる。padding問題

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.c1 {
2.width310px;
3.}
4.div.c2 {
5.padding20px;
6.border10px #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使いの人はこの方法マジオススメ。