前回に引き続き、
練習用HTML
floatプロパティを利用したレイアウトの練習に複雑なHTMLを用意する必要はありません。ボックスの配置方法さえ理解してしまえば、
サンプルとなるHTMLは以下の通りです。
<div id="box-A">
<div id="box-B">
B
</div>
<div id="box-C">
C
</div>
<div id="box-D">
D
</div>
</div>
CSSを個別に指定できるように、
背景色を着けてボックスを確認
まずは、
#box-A {
background-color: #333;
}
#box-B {
background-color: #99CC00;
}
#box-C {
background-color: #993399;
}
#box-D {
background-color: #CC6600;
}
表示ではボックスAが見当たりませんが、

ボックスBとCをフロート
次に、
#box-A {
background-color: #333;
}
#box-B {
background-color: #99CC00;
width: 300px;
float: left;
}
#box-C {
background-color: #993399;
width: 300px;
float: left;
}
#box-D {
background-color: #CC6600;
}
ブラウザの表示を確認すると

ついでに仕様を確認
ここで、
- フロートするボックスの合計幅が包含ブロックの幅
(内容領域) を超えた場合は、 後にフロートするボックスから下に配置される。 - フロートするボックスは包含ブロックの高さの算出から除外される
包含ブロックはフロートするボックスの親ボックス、
カラム落ちの再現
先ほどのプレビュー: ボックスBとCをフロートを表示し、
ボックスAの横幅をフロートする二つのボックスが収まりきらない値に設定しても同じ状態になります。
- ボックスAに小さな横幅を指定してカラム落ちさせる
- サンプル: preview3.
html

包含ブロックがフロートするボックスを高さの算出に用いない仕様の再現
この状態のときにもう一つ注目してほしいのは、
ためしに、
- ボックスAの高さがボックスBを無視している状態
- サンプル:preview4.
html

clearプロパティを指定
包含ブロックがフロートするボックスを高さに含めないと、
これを解決するためには、
#box-A {
background-color: #333;
border: 5px solid #000; /*表示確認のために枠線を引いた*/
}
#box-B {
background-color: #99CC00;
width: 300px;
float: left;
}
#box-C {
background-color: #993399;
width: 300px;
float: left;
}
#box-D {
background-color: #CC6600;
clear: both;/*floatによる左右への流し込みを解除*/
}

clearの指定されたボックスDはフロートしたボックスの下に回ることになり、
clearを指定できるボックスが無いとき
文書構造によっては、
このテクニックに関してはここでは解説を省かせていただきますが、
最後に
floatプロパティを利用したレイアウトの手法は、
『実践Web Standards Design』

中央部分のコンテンツ領域をボックスAとしたとき、

上図、

さらに、

この例でもわかる通り、
floatプロパティのテスト問題集
以前、
今回解説した手法だけでは解答出来ない問題も含まれておりますが、