21.
Float
Floatとは
コンテンツを左右に並べる
Floatはブロック内のコンテンツ全体を横並びにし、左右に寄せるプロパティです。コンテンツは幅や高さに合わせて回り込むようになります
通常のBoxコンテンツ
Boxコンテンツ(ブロック要素)は、通常縦方向に並びます。
Floatを使ったBoxコンテンツ
「float: left」で設定すると、Boxコンテンツが横並びになります。

コンテンツの回り込み
コンテンツがウィンドウサイズを超えると回り込むようになります。

回り込みの解除(overflow: hidden)
横並びメニューでは、最後に横並びを解除する必要があります。floatの横並びを解除したいときは「overflow: hidden」を設定します。
overflow: hidden;
メニューの横並び
FloatとFlexbox
コンテンツを横並びにするにはいくつかありますが、大きく2つの方法があります。
- Floatレイアウト
- Flexboxレイアウト

CSS3ではFlexboxが流行
CSS3からFlexboxが追加され、メニュー作成はFlexboxが主流になっています。FlexboxはFloatレイアウトよりも設定しやすいですが、まずFloatレイアウトで作成してみましょう。
メニューリンクの構造
リスト表示で構成
メニューリンクは、ul、liタグでリスト表示するのが一般的です。またメニュー全体はナビゲーションという意味で、navタグで構成します。
HTML
<header>
<nav>
<ul>
<li><a href="#">Menu1</a></li>
<li><a href="#">Menu2</a></li>
<li><a href="#">Menu3</a></li>
<li><a href="#">Menu4</a></li>
<li><a href="#">Menu5</a></li>
</ul>
</nav>
</header>
CSSを設定しない場合
CSSを設定しない場合、リストは縦表示になります。

CSSを設定した場合
FloatやFlexboxなどのCSS設定で、リストを横並びに表示します。

floatプロパティ
「float」は、コンテンツを横並びして左右に寄せるCSSプロパティで、Floatレイアウトで利用します。
float: 設定値;
floatプロパティの設定値
設定値 | 説明 |
---|---|
left | 要素を左寄せ |
right | 要素を右寄せ |
none | 配置を指定しない(デフォルト) |
Floatレイアウト
HTML
sectionタグのコンテンツを複数用意します。
<section class="box color1">
Boxコンテンツ
</section>
<section class="box color2">
Boxコンテンツ
</section>
<section class="box color3">
Boxコンテンツ
</section>
<section class="box color4">
Boxコンテンツ
</section>
CSS
CSSファイルでコンテンツの幅、高さを指定して「float :left」で横並びにします。わかりやすいように、コンテンツの背景色を色分けしておきます。
.box {
height: 100px;
width: 200px;
float: left;
}
.color1 {
background-color: #b79873;
}
.color2 {
background-color: #7bb773;
}
.color3 {
background-color: #4888c0;
}
.color4 {
background-color: #c25e55;
}
結果
コンテンツが左寄せで横並びになりました。

Floatでメニュー作成
メニューをFloatレイアウトで作成してみましょう。
ファイル構成
layout/
├── css/
│ └── menu.css
└── float_menu.html
HTMLの作成
floatを指定してメニューを作成します。また、わかりやすいようにメインコンテンツも用意します。
float_menu.html
<header id="float-menu">
<nav>
<ul>
<li><a href="#">Menu1</a></li>
<li><a href="#">Menu2</a></li>
<li><a href="#">Menu3</a></li>
<li><a href="#">Menu4</a></li>
<li><a href="#">Menu5</a></li>
</ul>
</nav>
</header>
<main>
メインコンテンツ
</main>
CSSの作成
メニューの横並び
メニュー部分のliタグを、float: left で横並びにします。
menu.css
#float-menu ul {
list-style: none;
padding: 0;
}
#float-menu li {
float: left;
background-color: #f0f8ff;
padding: 20px 20px;
}
main {
padding : 20px;
background-color: #d3d3d3;
}
回り込み解除
navタグに「overflow: hidden」を設定して、回り込み解除をします。overflowに関しては別の章で解説します。
menu.css
#float-menu nav {
overflow: hidden;
}
結果
メニューが左から横並びに並びました。画面に収まらないときは回り込みをします。

右寄せ
右寄せにする場合は、float: right にします。
#float-menu li {
float: right;
background-color: #f0f8ff;
padding: 20px 20px;
}
結果
メニューが右から横並びに並びました。
回り込み処理を解除しない場合
メニューで回り込み処理を解除しない場合、その後のコンテンツも横並びになってしまうので注意しましょう。

clearfix
通常「overflow: hidden」で回り込みを解除しますが、昔からの手法で「clearfix: both」でも解除できます。
clear: both;
演習
問題1
コンテンツを横並びにするCSSプロパティの設定はどれですか?
1)overflow: hidden
2)overflow: left
3)float: hidden
4)float: left
問題2
コンテンツを横並びを解除できるCSSプロパティの設定はどれですか?
1)overflow: hidden
2)overflow: left
3)float: hidden
4)float: left