互換モード(Quirks モード) 時 の box モデルを扱いやすくするための CSS
古いWebサイトの場合、システムやガイドラインの都合で、互換モード時 (Quirks モード) で構築しなければいけない場合があります。
互換モード (Quirks モード) 時は Opera 7, 8 の DOCTYPE スイッチ にあるように、標準モードと異なる解釈がされますが特にレイアウトに影響を及ぼす、width に padding や border を含めるか否かの違いに苦戦することが多いはずです。
互換モード時、IE では強制で border-box (width に padding や border を含める) の解釈になりますが、Firefox などでは content-box (width に padding やborder を含めない)で解釈されます。
そこで、Firefox などの boxモデルの解釈を IE に合わせて、 box モデルの解釈のされ方を border-box に統一します。
次のような CSS のコードを追記することで、実現が可能です。
*{
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
合わせて IE で table 内に font 関連のプロパティーが継承されない問題の対策も追記しておくと、さらに扱いやすくなります。
table{
font-size:100%;
}
*{
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}

トラックバックURI
http://www.yomotsu.net/wp/wp-trackback.php?p=515
コメント
ccoさんからのコメント
2009年4月17日 9:30
はじめまして。 いつもこのブログを楽しく拝見させてもらっています。 上記の記述だと、IE7では対応してないみたいですね。 IETESTERや、standaloneで見たので、正規版でどうかはわかりかねますが・・・ 一応ご報告まで。adminさんからのコメント
2009年4月17日 10:48
@cco さま : はじめまして。お読みくださいましてありがとうございます。 ご指摘の通り、IE で -ms-box-sizing がサポートされたのは 8 からですので、6, 7 での標準モード (standard モード) 時は機能しません。ただ、IE 7 以前は、互換モード(Quirks モード) 時に強制で box-sizing: border-box; の状態になってしまうので、互換モード前提で Web ページを構築する場合にのみ役立つ小技かなと考えています。 検証までしていただきありがとうございました。今後ともよろしくおねがいします !!創るmetaboyさんからのコメント
2009年11月19日 11:21
互換モード:さて、「互換モード」とはなんぞや。正確に理解できているのか?対応はどうなのか?少し調べてみる ・・・ 【ブラウザ】 実は先日、 ・(管理している)ある顧客サイトで ・IEにおいて、互換モードがからむ不具合が 見つかった。 (要は、互…コメントフォーム