2段カラム、3段カラムのところをよく見かけますが見るブラウザによってサイドバーがメインコンテンツの横ではなく、下に表示されているところをよく見かけます。
どうすれば思い通りの表示に出来るかいろいろ調べてみました。その結果3段カラムに関しては以下の通りにすればcssにちゃんと対応しているブラウザでちゃんと表示されるようになりました。

簡略してこの状態!まさしく入れ子状態ですね(笑)実際のソースはもっと複雑になってしまってマス・・・
これはまず全体を囲む要素の中で左右に分割して、さらにその左の要素の中で左右に分割しています。
各ID(class)の必要最小設定
#inbox { width: 760px}
#wrap { float:left; width:580px;}
#main { float:right;width:400px;}
#left { float:right;width:160px;}
#right { float:right;width:160px;}
htmlはこんな感じ
<div id="inbox">
<!-- ここからwrapエリア -->
<div id="wrap">
<!-- ここからメイン -->
<div id="main">
ここに"main"エリアに表示したいソースを入れてください。
</div>
<!-- ここまでメイン -->
<!-- ここから左サイド -->
<div id="left">
ここに"left"エリアに表示したいソースを入れてください。
</div>
<!-- ここまで左サイド -->
</div>
<!-- ここまでwarpエリア -->
<!-- ここから右サイド -->
<div id="right">
ここに"right"エリアに表示したいソースを入れてください。
</div>
<br clear="all" />
<!-- ここまで右サイド -->
</div>
続きを読む
このようにfloat設定とwidthを必ず設定することでレイアウトを保持する事が出来ます。
こんな感じで表示されます。この見本は各ブロックを分かりやすくするために背景に色を入れています。それと、上記のcssに若干margin指定を追加しています。
indexテンプレートに書く順番としてはinbox-warp-main-left-rightとします。この順番でcssに対応していないブラウザで見た場合でも一番読んでもらいたいmainコンテンツが一番上にきて、そのあとにleft、rightの順番に表示されるようになります。
ただ、このやり方だとすべてのwidthが固定されてしまうのでブラウザの横幅を変更する事によって可変する事が出来なくなります。
(2004:04:13追記)lLivedoor Blog用の解説をハイゴック:livedoor Blog用の表示の崩れない3段カラムに書いておきました。
(2004:05:07追記)実際にcssを適用して作ったhtmlをアップしました。実際にどのように表示されるか確認してみてください。OSXのIE、safari、opera、firebird(現fire fox)で確認済みです。
なお、上記に書いてるhtmlソースの見本をコピー&ペーストしてもちゃんと表示されません。
その理由はソース中に全角スペースが入ってるからです。もし、うまく3段に表示されない時は全角スペースが入ってないか調べてみてはどうでしょう?
(2004:06:13追記)
3段カラムテンプレートの配布を開始しました。3カラム テンプレート [ RGM-79 GM ] 前編 [ MSM-03C ]
続きを隠す