ページレイアウトをデザインする−float

前のページに戻る

float指定の基本

floatは浮動化といい、指定したブロックを左または右に寄せ、余白部分にfloatを指定したブロックの下にあるブロックを回り込ませるためのものです。

記述記述表示
ブロックを寄せる位置float: left;ブロックを左に寄せ、右余白部に下のブロックを回り込ませる
float: right;ブロックを右に寄せ、左余白部に下のブロックを回り込ませる
回り込みの解除clear: left;左に寄せたブロックへの回り込みを解除
clear: right;右に寄せたブロックへの回り込みを解除
clear: both;どちらに寄せたブロックへの回り込みも解除

floatを利用する場合、基本的な注意点は以下の3つです。

  1. floatを指定するブロックには必ずwidth(幅)も指定する
  2. 必ず回り込みの解除(clear)を指定する
  3. floatを指定した次のブロックに、floatもclearを指定していない場合、widthを指定しない(エラーになる)。
    エラーやレイアウトの乱れを防ぐためには、以下の点にも注意する必要があります(後述)。

floatの利用例−左寄せ

たとえば下の様なブロックがあったとします(分かりやすくするためブロックに背景色を表示しています)。

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の利用例−右寄せ

上の例の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の基本ですが、いくつか問題があります。

  1. ブラウザの幅が狭くなると、回り込ませたブロックが重なる、または下に回りこむ
    このページのウィンドウ幅を変えて、レイアウトの崩れを確認してみてください。
  2. ブロックに背景を指定していると、ブロック間の余白が目立つ

他にもブラウザの解釈や設定によって表示が異なる、ブロックの高さ(行数)によってレイアウトが崩れるなどの問題もあります。
問題を解決するために必要な方法を、次のページで紹介します。