レイアウト崩れの原因!floatを使ったらclearfixを!【HTML・CSS】

PROGRAMMING

ご覧いただきまして、ありがとうございます!

CSSでレイアウトを組んでいる時に、カラムがおかしい。。。

そんな経験はありませんか??

CSSのプロパティfloatを使った時に起こる可能性が高いです。
そんな時はclearfixを使ってみましょう!

いちいち、floatの回り込みを解除するのは面倒です。

一括でclassを指定して解除していく方法を解説していきます。

結論

それでは早速、結論となるコードを紹介していきます。

clearfix::after{
   content: "";
   display: block;
   clear: both;
}
<div class="clearfix">
	<div class="blue"></div>
	<div class="green"></div>
</div>
<div class="next">次の要素次の要素次の要素次の要素次の要素次の要素</div>

上記のCSSを設定してみてください。

そして、floatをかけた親要素にclass名として「clearfix」を付与してあげるだけです!

私は「clearfix」だと長いので、「cf」としています。

cf::after{}こんな感じですね!

clearfixの解説

それでは「clearfix」について詳しく解説していきたいと思います。

おそらくfloatをうまく解除できていない時は、上のような感じになっているはずです。

本来イメージしているのは「次の要素!」が青いボックスと、緑のボックスの下にくるような感じです。もちろん、「次の要素!」がテキストに変わっても同じですね。

では次に本来のイメージを表示してみます。

いい感じに「次の要素!」が青いボックスと、緑のボックスの下に行っていますね。

これは「次の要素!」がテキストでも同様です。

では、なぜ思い通りにカラムが出来ないのか。

それはfloatをかけた時の回り込みの解除が出来ていないからです。

そこでclearfixの出番ですね!

本来ならば、floatをかけた要素に対して、、、

<div style="clear: both;"></div>

と入れたり、、、

<div class="float_none"></div>
<style>
        .float_none{
            clear: both;
        }
</style>

と、いれなければなりません。

そこで初めてfloatが解除されて、思い通りのイメージになるはずです。

ですが、clearfixを使うと、とても簡単な事が分かります。

まず、CSSに、、、

clearfix::after{
   content: "";
   display: block;
   clear: both;
}

上記のコードを書き込みましょう!

そして、floatをかけた親要素に「clearfix」を付与してあげればOKです。

今回の例では、下のような感じです。

<div class="clearfix">
	<div class="blue"></div>    //cssにてfloat: left;
	<div class="green"></div>    //cssにてfloat: left;
</div>
<div class="next">次の要素次の要素次の要素次の要素次の要素次の要素</div>

class=”blue”と、class=”green”にfloatをかけています。

この場合、それの親要素、divに対してclass名clearfixを付与しましょう。

そしたら、class名nextがいい感じにカラム落ちするはずです。

この時の注意点は、floatをかけていない要素までclearfixで囲ってはいけません。
nextの次にclearfixの閉じタグがくる感じですね。これはNGです。

あくまでも、floatをかけた親要素になります!

これで後は、clearfixを使いまわすだけになります。

使いまわす際、clearfixだと長いので私は「cf」にしていますw

clearfixについては以上になります。

ご覧いただきまして、ありがとうございました!

まとめ

私もHTML、CSSを勉強したての時は、「なんでレイアウトが思い通りにいかないんだろう。。。」と途方に暮れていましたw

ですが、まずは「clear」というプロパティの存在を知ってそこから「clearfix」の存在を知りました。

なぜ、clearfixの存在を知ったかというと、毎度毎度、clear: both;するのが面倒だったからですw

そこで、ネット情報を調べてみました。

すると、class名を振るだけで、回り込み解除が出来る事を知ったのです。

公式サイト様やブロガーの皆様にはいつも感謝していますw

今回はここまでです。

ご覧いただきまして、ありがとうございました!

コメント

  1. […] レイアウト崩れの原因!floatを使ったらclearfixを!【HTML・CSS】ご覧いただきまして、ありがとうございます!CSSでレイアウトを組んでいる時に、カラムがおかしい。。。そんな経験はあ […]

タイトルとURLをコピーしました