プロが教えるわが家の防犯対策術!

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では縦に並んで表示されてしまいます。
この解釈の違いがよく分かりません…。
分かる方は教えていただけませんか?

A 回答 (4件)

himajin100000さんの回答にもありますが、IE6は互換モードの場合widthにpaddingやborderを含めるので、実質#contents内のスペースは870pxになってしまいます。


なのでfloatの指定がある横幅が453pxのdivが2つ並ぶだけのスペースがなく、#content-rightほうのdivが落ちてしまいます。

一応、ハックを使わないで対応できる参考サイトのリンクを載せておきます。

参考URL:http://adp.daa.jp/archives/000265.html
    • good
    • 0
この回答へのお礼

なるほど、仕様の違いなんですね。
丁寧にお答えいただきありがとうございました

お礼日時:2008/09/16 09:45

IEがcssの仕様書どおりに動く意志が無い為です。


ボックスの解釈が他のcssに準拠したブラウザと異なる解釈をするためにはみ出て、落ちる結果になっています。

widthがpadding・borderを含むのか含まないのかで計算結果が違います。
DOCTYPE宣言によって、スイッチが切り替えられますのでブラウザで表示が違う相談の時はDOCTYPE宣言もデータに入れたほうがいいですよ。
http://www.css-designsample.com/others/layout.html

ブラウザで異なった表現になる時は解釈違いによる事が多いです。
解釈ではないけど、バグ(プログラムの欠陥)もあったりします。
バグ辞典
http://cssbug.at.infoseek.co.jp/
それぞれ大量にバグはありますので、その穴埋めをする技術をハックといいます。
これもバグを利用してバグ封じみたいな、技から、いろいろあります。有名なものは名前がついています。スターハックとか、アンダースコアーハックとか。なるべくならハックなど使わない方向で組めるようにがんばってください。
    • good
    • 0

コピーミスった


×!DOCTYPE html
○<!DOCTYPE html
    • good
    • 0

IE 7標準モードで再現せず。

互換モードで再現。
明らかにDOCTYPEスイッチの問題。

http://www.remus.dti.ne.jp/~a-satomi/bunsyorou/D …

!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<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>
    • good
    • 0
この回答へのお礼

DOCTYPE宣言の問題だったのですね!
ありがとうございました

お礼日時:2008/09/16 09:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!