floatは浮動化といい、指定したブロックを左または右に寄せ、余白部分にfloatを指定したブロックの下にあるブロックを回り込ませるためのものです。
記述 | 記述 | 表示 |
---|---|---|
ブロックを寄せる位置 | float: left; | ブロックを左に寄せ、右余白部に下のブロックを回り込ませる |
float: right; | ブロックを右に寄せ、左余白部に下のブロックを回り込ませる | |
回り込みの解除 | clear: left; | 左に寄せたブロックへの回り込みを解除 |
clear: right; | 右に寄せたブロックへの回り込みを解除 | |
clear: both; | どちらに寄せたブロックへの回り込みも解除 |
floatを利用する場合、基本的な注意点は以下の3つです。
たとえば下の様なブロックがあったとします(分かりやすくするためブロックに背景色を表示しています)。
1 ブロックを並べることで
2 2段組、3段組みなども
3 可能になります
これら3つのブロックと解除に利用する空ブロック(中身が無いので表示はされない)のhtmlは↓の様になっています。
(解除のcssを指定するブロックに文字が入力されていても問題ありませんが、ここでは空白ブロックを利用します。)
ブロックのhtmlサンプル(背景色の指定は省略)
<p>1 ブロックを並べることで</p>
<p>2 2段組、3段組みなども</p>
<p>3 可能になります</p>
<p></p>
1のブロックにfloat: left;を指定、幅はwidth: 300px;、つまり300ピクセルとします。
また、3のブロックの下に回り込み解除用の空白ブロックを記述し、clear: left;を指定します。
cssの指定
headの<STYLE type="text/css"><!-- から --></STYLE>の間に挟みます。
.left {
float: left;
width: 300px;
}
.cl {
clear: left;
}
1つ目のブロックにfloatのcssを指定、最後の空白ブロックに解除のcssを指定すると、
<p class="left">1 ブロックを並べることで</p>
<p>2 2段組、3段組みなども</p>
<p>3 可能になります</p>
<p class="cl"></p>
このような表示になります。
1 ブロックを並べることで
2 2段組、3段組みなども
3 可能になります
この例ではfloatを指定したボックスが1行分の高さしかないため、横には2番目のボックスしか入りません。
たとえば下の例のようにfloatを指定したボックスの高さが十分あれば、解除するまでブロックが回り込みます。
floatしたボックスの高さがあると、このような表示になります。
1
ブロックを
並べる
ことで
2 2段組、3段組みなども
3 可能になります
解除用のブロックを2と3のブロックの間に入れた場合
<p class="left">1 ブロックを並べることで</p>
<p>2 2段組、3段組みなども</p>
<p class="cl"></p>
<p>3 可能になります</p>
こうなります。
1
ブロックを
並べる
ことで
2 2段組、3段組みなども
3 可能になります
1に加えて2のブロックにもfloatのcssを指定、最後の空白ブロックに解除のcssを指定すると
<p class="left">1 ブロックを並べることで</p>
<p class="left">2 2段組、3段組みなども</p>
<p>3 可能になります</p>
<p class="cl"></p>
このような表示になります。
1 ブロックを並べることで
2 2段組、3段組みなども
3 可能になります
上の例のfloatをすべて右に寄せるrightに変更すると、下の様な表示に変わります。
1つ目のブロックに左に寄せるfloat: right;とwidth: 300;を指定、最後の空白ブロックに解除のcssを指定
1 ブロックを並べることで
2 2段組、3段組みなども
3 可能になります
floatしたボックスの高さがある場合
1
ブロックを
並べる
ことで
2 2段組、3段組みなども
3 可能になります
解除用のブロックを2と3のブロックの間に入れた場合
1
ブロックを
並べる
ことで
2 2段組、3段組みなども
3 可能になります
1に加えて2のブロックにもfloat: right;とwidth: 300;を指定、最後の空白ブロックに解除のcssを指定した場合
1 ブロックを並べることで
2 2段組、3段組みなども
3 可能になります
以上がfloatの基本ですが、いくつか問題があります。
他にもブラウザの解釈や設定によって表示が異なる、ブロックの高さ(行数)によってレイアウトが崩れるなどの問題もあります。
問題を解決するために必要な方法を、次のページで紹介します。