この記事ではCSSの「float」プロパティについて解説します。
レイアウトをする際に物凄くお世話になるプロパティで、ここでつまづくとサイトを作ることが困難になってしまうので、しっかりと理解しておきましょう。
floatとは?
要素を右に寄せたり、左に寄せたりします。
要素を横並びにしたいときに、よく使われます。
注意点
floatさせるとwidthを失い、内包する要素の幅に依存するようになるのでwidthは必ず指定します(画像の場合はブラウザが自動的に計算して配置してくれます)。
それと、positionでstatic以外の値が指定されている要素にはfloatは効きませんので注意しましょう。
floatの使い方
floatに指定できる値は以下の通りです。
値 | 説明 |
---|---|
none | デフォルト。要素の配置を指定しない |
left | 要素を左に寄せる。その後ろにある要素は右に回り込む |
right | 要素を右に寄せる。その後ろにある要素は左に回り込む |
横並び
普通は以下のようにブロックレベル要素は縦に並びます。
HTML
<div class="parent"> <div class="BOX-A">BOX-A</div> <div class="BOX-B">BOX-B</div> <div class="BOX-C">BOX-C</div> </div>
CSS
.BOX-A{ width: 180px; height: 180px; background-color: orange; } .BOX-B{ width: 120px; height: 120px; background-color: blue; } .BOX-C{ width: 450px; height: 250px; background-color: yellow; }
この縦に並んだ3つの要素全てに以下のようにfloat:leftを指定します。
すると、縦に並んだ3つの要素が左寄せの横並びになります。
CSS
.BOX-A, .BOX-B, .BOX-C{ float: left; }
回り込みの解除
上の例では3つの要素を横並びにしましたが、3つ目の要素だけfloatの指定を行わないとどのような表示になるのか見てみましょう。
CSS
.BOX-A, .BOX-B{ float: left; }
floatを指定していない3つ目の要素の表示だけ先ほどと違います。なぜこのような表示になるのか。
float:leftかrightを指定された要素はフローティングボックスという特殊なボックスになった上で、左や右に寄せられます。フローティングボックスというのは浮遊、つまり浮いた状態のボックスとなり、フローティングボックス以外の要素からは存在しないものとして扱われます。
今回の場合、BOX-AとBOX-Bは浮いた状態のボックスとなっていたので、浮いたことによって出来た隙間に、BOX-Cが回り込んで(潜り込んで)しまいました。このような意図しない配置を避けるために、回り込みの解除を行う必要があり、方法は二つあります。
clearプロパティ
まず一つ目の方法は回り込ませたくない要素、つまりBOX-Cに対してclearプロパティを使う方法です。
値 | 説明 |
---|---|
both | 左右両方の回り込みを解除する |
left | 右側への回り込みを解除する |
right | 左側への回り込みを解除する |
今回、右側に回り込んでいるのを解除するので、clear:leftまたはbothを指定します。
すると、
CSS
.BOX-C{ clear: left; }
このように無事、解除することができました。
ただ、この方法はあまり使われず(長くなるので割愛しますが、不要なHTML要素が増えることがあったりするので・・・)、現在では解除する方法としてclearfixという手法がよく使われます。
clearfix
clearfixは簡単で、floatを指定した要素の親要素にclearfixまたはcfという解除用classを与えて、after擬似要素を使ってstyleを記述するだけです。
HTML
<div class="parent cf"> <div class="BOX-A">BOX-A</div> <div class="BOX-B">BOX-B</div> <div class="BOX-C">BOX-C</div> </div>
CSS
.cf::after { content: ""; display: block; clear: both; }
まとめ
この記事に書かれていることで、特に覚えておいて欲しいことは以下の3点です。
- floatしたらcleafixで解除する
- floatしたらwidthを指定する
- positionでstatic以外の値が指定されている要素にはfloatは効かない
CSS関係の記事は他にも書いているので、宜しければそちらもチェックしてみてください。
-
【完全初心者向け】CSSについての超簡単まとめ
WEBサイトを作る上で、HTMLと並んで絶対に欠かせない言語といえばCSS。 この記事ではCSSについてなるべく難しい言葉を使わずに、でも要点は抑えて解説していこうと思います。是非肩の力を抜いて読み進 ...
-
【CSS入門】 inline?block?displayで要素の種類を指定しよう
この記事ではCSSのdisplayプロパティについて解説します。 CSSを学ぶにあたって絶対に避けては通れない重要な項目なので、しっかりと理解していきましょう。 Contentsdisplayとは?d ...
-
【CSS入門】tableとtable-cellで要素を横並びさせよう
この記事ではCSSのdisplayプロパティの値である、tableとtable-cellをセットで紹介します。 Flexboxの登場により使う機会がほとんど無くなりましたが、場合によってはまだまだ使う ...
-
【CSS入門】Flexboxの基本と使い方まとめ【そろそろ覚えたい】
この記事ではdisplayプロパティの値である、flex(Flexbox)を紹介します。 Flexboxを覚えることで、サイトを作る際にレイアウトを組むのがかなり楽になりますので、必ず使えるようにして ...
-
【CSS入門】positionの使い方を簡単解説【ちょっと難しい?】
この記事では要素の配置方法を指定する、CSSのpositionプロパティについて解説します。 absoluteやrelative・・・と聞くとWebデザインの勉強を始めたばかりだと難しく感じてしまいま ...
-
【CSS入門】z-indexを使えば要素の重なり順は思うがまま
この記事ではCSSのz-indexプロパティについて解説します。 Contentsz-indexとは?z-indexの使い方z-index: auto;z-index: 整数;まとめ z-indexと ...
-
【CSS入門】overflowで、はみ出し部分の表示を指定
この記事ではCSSのoverflowプロパティについて解説します。 Contentsoverflowとは?overflowの使い方overflow: visible;overflow: hidden; ...