<style>
<!--
.Entire{background-color:#CEC;clear:both;}
.Header{background-color:white;clear:both;}
.Footer{background-color:white;clear:both;}
.First {float:left; width:50%}
.Second{margin-left:50%; background-color:#BCF;}
.EndDivision{clear:both;}
//--></style>
<div class="Entire">
<div class="Header">
ページの上部
</div>
<div class="First">
ソースコードで先に書く部分<br />
</div>
<div class="Second">
ソースコードで後に書く部分<br />
ソースコードで後に書く部分<br />
<div class="EndDivision"></div>
</div>
<div class="Footer">
ページの下部
</div>
</div>
上のソースコードのように書くとCSSを使用して段組を作ることができます。以下では、このソースコードを得るまでの考え方や注意点を、順を追って書いていきます。
まず思いつくのは、divタグを2つ並べて書き、先に書いた方のdivタグにfloatを指定することです。このソースコードと表示例を以下に示します。
<div style="background-color:#CFC; float:left; width:250%;">左領域</div>
<div style="background-color:#BCF;">右領域</div>
Firefoxでは幅の等しい2つの領域が横に並んで表示されるのですが、CSSの実装が正しくないInternet Explorer (IE)では、右領域の位置が全体的に下にずれてしまいます。
次の例のように、divタグを上部に1つ追加することでIE7でも正しく表示されるようになります。
<div style="background-color:#CCC;">上領域</div>
<div style="background-color:#CFC; float:left; width:250px;">左領域</div>
<div style="background-color:#BCF;">右領域</div>
ここまでは正しく表示されたようですが、floatはあくまで回り込みを指定するにすぎません。そのため、floatを指定しなかった方のタグの内容が長くなってしまうと途中で回り込みが解除され、右領域のはみ出た部分が左側領域の下に表示されてしまいます。
※HTMLのソースは直前のものとほぼ同一なので省略
これは、右領域に余白(margin-left)を設定することで解決できます。余白の幅は左領域の幅と同じ値にします。
<div style="background-color:#CCC;">上領域</div>
<div style="background-color:#CFC; float:left; width:250px;">左領域</div>
<div style="background-color:#BCF; margin-left:250px;">右領域の……(省略)</div>
divタグの内容が終わってしまえば、divタグの背景色もそこで終わってしまいます。上の例では左領域が途切れていますが、左領域の方が長い場合は右領域の背景色が途切れます。
この対処は、floatを適用したタグ(例では左領域)とそうでないタグで(例では右領域)対処方法が違います。floatを適用したタグの背景色の対策の考え方はシンプルです。段組全体を別のdivタグで覆い、そのタグに、floatを適用したタグの背景色と同じ色を設定します。
<div style="background-color:#CFC;">
<div style="background-color:#CCC;">上領域</div>
<div style="background-color:#CFC; float:left; width:250px;">左領域</div>
<div style="background-color:#BCF; margin-left:250px;">右領域の……</div>
</div>
左領域の文章が長い場合は次のように表示されます。
<div style="background-color:#CFC;">
<div style="background-color:#CCC;">上領域</div>
<div style="background-color:#CFC; float:left; width:250px;">左領域の……</div>
<div style="background-color:#BCF; margin-left:250px;">右領域の背景色が途切れる。</div>
この位置の……
</div>
この位置の……
後述の文章が回り込むことと、右領域の背景色が途切れることが問題です。この対策として、まず右領域に対応するdivタグの中でclear:bothを指定します。ただし、まだ解決しません。
<div style="background-color:#CFC;">
<div style="background-color:#CCC;">上領域</div>
<div style="background-color:#CFC; float:left; width:250px;">左領域の……</div>
<div style="background-color:#BCF; margin-left:250px;">
右領域
<div style="clear:both"></div>
</div>
この位置の文章は右領域に入りこまないが……。
</div>
最後の文が書かれている位置は正しいのですが、背景色が適切ではありません。もう1つdivタグを使い、背景色を設定することで解決できます。
<div style="background-color:#CFC;">
<div style="background-color:#CCC;">上領域</div>
<div style="background-color:#CFC; float:left; width:250px;">左領域の文章が……。</div>
<div style="background-color:#BCF; margin-left:250px;">
右領域
<div style="clear:both"></div>
</div>
<div style="background-color:#CCC;">この位置の文章は……。</div>
</div>