One Step
Takeshi Blog

【入門】float、clearfixについて

how to use float

floatについて

今回は、floatについて説明していこうと思います。

前までは、ナビゲーションメニューなどを作る時には、floatを使って作ることが主流でしたが、flexboxが登場してから並列させる場合は、こちらを使うようになりました。

それでも、まだ使うこともありますし、昔のサイトを修正する際にお目にかかることもあると思うので、解説していきたいと思います。

floatの使う場面

floatは、「漂う、浮く」といった意味で、HTMLで使うときも考え方はそのままです。div要素やp,h要素のようなブロックレベルの性質をもつ物は、デフォルトでブラウザーいっぱいの幅になるので、縦に並んでいきます。

しかし、インラインレベルの要素とブロックレベルの要素を並べた時に、下の図の様にインライン要素の横に無駄なスペースが出来てしまったりすることがあります。このスペースに入れたい場合などにfloatを使ったりして、回り込ませます。

タイトル

imgを使用した画像

text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text

floatの使い方

floatを使うときは、回り込ませたい対象(位置)に対して使います。上の図の場合は、画像右横の隙間に文字を入れたいので、画像に対して、CSSに書き込みます。

CSS

1
2
3
img {
float: left;
}

そうすると、このようになります。

タイトル

imgを使用した画像

text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text

これで画像の横に文字を置くことが出来ました。この状態がどのような状態になっているかというと、画像のimgが一つ上のレイヤーに上がったことになっています。言葉だけだとわかりづらいと思うので、画像を透過してみてみましょう。

タイトル

imgを使用した画像

text text text text text text text text text text text text text

サブタイトル

画像の下もピンクになっているのがわかると思います。なので、そのまま書き進めるとサブタイトルもそれ以降に書いているものも下に入っていってしまいます。

これを解消する為にどこかでリセット(クリア)してあげないといけないです。

clearfixの使い方

上の図の続きになりますが、classでclearfixを作ってあげて、回り込みを終わりにしたい要素にclassで設定します。clearfixを作らずに終わりにしたい要素(今回はtextと書いてある所)にCSSプロパティで{clear: both;}を書くことも出来ます。webサイトなどを作っていると何回も使うことがあるので、classで作っておけば後で使い回しが出来ますので作っておく事をお勧めします。

CSS

1
2
3
4
5
.clearfix::after {
display: block;
content: "";
clear: both;
}

textから後ろを元に戻したかったので、class=clearfixをp要素に設定してあげて、その後ろからという事で、::afterを使っています。

タイトル

imgを使用した画像

text text text text text text text text text text text text text

サブタイトル

そして、区切りをつける為に、displayをblockにします。次にcontentに空白を描き、擬似的にブロック要素があるようにさせます。最後にclearでbothを設定しています。このclearはleft,right,both,noneの4つで設定できます。今回は左に寄せているので、clearをleftに設定しても良いのですが、使い回しを考えて、両方に適用させる為にbothとします。

上の図は、わかり易くする為にcontentに”clearfix”をbackgroundに”yellow”を設定しています。

こちらの記事もどうぞ!!