- ベストアンサー
[CSS]Firefox2では横表示・IE6では縦表示
CSSについて質問させてください。 contentsというDIVの中に、con-leftというDIVとcon-rightというDIVを横に並べて表示したい場合に、以下のタグを書きました。 [CSS] #contents { width:910px; padding:20px; } #contents #con-left , #contents #con-right { width:453px; float:left; border:solid 1px red; } [HTML] <div id="contents"> <div id="con-left"></div> <div id="con-right"></div> </div> 理論上では、con-left及びcon-rightの横幅は453px+ボーダーの2pxで、合計455px、それが二つで910pxで、横に表示されるはず。 しかしIEでは縦に並んで表示されてしまいます。 この解釈の違いがよく分かりません…。 分かる方は教えていただけませんか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
IE 7標準モードで再現せず。互換モードで再現。 明らかにDOCTYPEスイッチの問題。 http://www.remus.dti.ne.jp/~a-satomi/bunsyorou/Doctype-Switch_situation.html !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>Q3445896 TestCase 1</title> <style type="text/css"> #contents { width:910px; padding:20px; } #contents #con-left , #contents #con-right { width:453px; float:left; border:solid 1px red; } </style> </head> <body> <div id="contents"> <div id="con-left"></div> <div id="con-right"></div> </div> </body> </html>
その他の回答 (3)
himajin100000さんの回答にもありますが、IE6は互換モードの場合widthにpaddingやborderを含めるので、実質#contents内のスペースは870pxになってしまいます。 なのでfloatの指定がある横幅が453pxのdivが2つ並ぶだけのスペースがなく、#content-rightほうのdivが落ちてしまいます。 一応、ハックを使わないで対応できる参考サイトのリンクを載せておきます。
お礼
なるほど、仕様の違いなんですね。 丁寧にお答えいただきありがとうございました
- ICHI-yan
- ベストアンサー率33% (45/134)
IEがcssの仕様書どおりに動く意志が無い為です。 ボックスの解釈が他のcssに準拠したブラウザと異なる解釈をするためにはみ出て、落ちる結果になっています。 widthがpadding・borderを含むのか含まないのかで計算結果が違います。 DOCTYPE宣言によって、スイッチが切り替えられますのでブラウザで表示が違う相談の時はDOCTYPE宣言もデータに入れたほうがいいですよ。 http://www.css-designsample.com/others/layout.html ブラウザで異なった表現になる時は解釈違いによる事が多いです。 解釈ではないけど、バグ(プログラムの欠陥)もあったりします。 バグ辞典 http://cssbug.at.infoseek.co.jp/ それぞれ大量にバグはありますので、その穴埋めをする技術をハックといいます。 これもバグを利用してバグ封じみたいな、技から、いろいろあります。有名なものは名前がついています。スターハックとか、アンダースコアーハックとか。なるべくならハックなど使わない方向で組めるようにがんばってください。
- himajin100000
- ベストアンサー率54% (1660/3060)
コピーミスった ×!DOCTYPE html ○<!DOCTYPE html
お礼
DOCTYPE宣言の問題だったのですね! ありがとうございました