CSS float と clear
1. float プロパティ
float プロパティは、要素の配置(ポジショニング)と書式設定に使用されます。例えば、画像をテキスト内の左側または右側に「浮かせて」配置し、テキストをその周囲に回り込ませることができます。
float プロパティには以下のいずれかの値を指定できます。
left- 要素をコンテナの左側に浮かせます。right- 要素をコンテナの右側に浮かせます。none- 要素を浮かセットにしません(デフォルト)。テキストはそのまま表示されます。inherit- 要素は親要素からfloat値を継承します。
最も単純な使い方は、画像の周囲にテキストを回り込ませることです。
1.1 float: right
以下の例では、画像を右側に配置し、テキストをその左側に回り込ませる方法を示します。
img {
float: right;
}1.2 float: left
以下の例では、画像を左側に配置し、テキストをその右側に回り込ませる方法を示します。
img {
float: left;
}1.3 float: none
以下の例では、画像を本来表示される場所(デフォルト)に配置します。
img {
float: none;
}2. 要素を横に並べる
通常、ブロック要素(div など)は垂直に積み重なります。しかし、float を使用することで、要素を横に並べることができます。
.div1 {
float: left;
width: 33.33%;
padding: 15px;
}3. clear プロパティ
clear プロパティは、どの要素が浮いた(float した)要素の隣に配置できるか、またどの側に配置できるかを指定します。
clear プロパティには以下の値を指定できます。
none- 両側に浮いた要素を許可します(デフォルト)。left- 左側に浮いた要素を許可しません。right- 右側に浮いた要素を許可しません。both- 左側と右側の両方に浮いた要素を許可しません。inherit- 親要素から clear 値を継承します。
clear を使用する最も一般的なケースは、要素に float を適用した後、後続の要素が回り込むのを防ぎたい場合です。
3.1 clear: both の使用例
.div-after-float {
clear: both;
}4. Clearfix ハック
浮いている要素がその親要素(コンテナ)よりも高い場合、その要素はコンテナの外側にはみ出してしまいます。この問題を解決するために、「Clearfix ハック」を使用します。
以前は overflow: auto; が使われていましたが、現在は以下の疑似要素(pseudo-element)を使用した手法が推奨されています。
.clearfix::after {
content: "";
clear: both;
display: table;
}5. ボックスをグリッド状に配置する / 等幅ボックス
float プロパティを使用すると、コンテンツのボックスを並べてグリッドを作成できます。
.box {
float: left;
width: 33.33%; /* 3つのボックスを横並びにする */
padding: 50px;
} 補足:box-sizing: border-box; を併用することで、パディングやボーダーを含めた幅の計算が容易になり、レイアウト崩れを防ぐことができます。
6. 画像を並べて表示する
float を利用して、複数の画像を横一列に並べるギャラリーのようなレイアウトも簡単に実装可能です。
.img-container {
float: left;
width: 33.33%;
padding: 5px;
}7. ナビゲーションメニュー
float は、ハイパーリンクのリストを水平なメニューとして表示する場合にも頻繁に利用されます。
ul {
list-style-type: none;
}
li {
float: left;
}
li a {
display: block;
padding: 8px;
background-color: #dddddd;
}