CSS: フロートの解除にはクリアフィックスが便利
目次
フロートの解除について、順を追って解説します。
下記のような表示を目指してHTMLとCSSを記述します。
<div class="container"> <div class="item">AAA</div> <div class="item">BBB</div> <div class="item">CCC</div> </div> <div class="container"> <div class="item">あああ</div> <div class="item">いいい</div> <div class="item">ううう</div> </div> <div class="container"> <div class="item">阿阿阿</div> <div class="item">以以以</div> <div class="item">宇宇宇</div> </div> <div class="footer"> フッター </div>
.container { margin: 20px 0; } .item { float: left; margin-right: 10px; width: 100px; }
clearしないとどうなるか
float
を使った後でclear
しないと、表示が大きく乱れてしまいます。
フロートの親要素の次の要素でクリアすると
float
を包む親要素の次の要素にclear
を指定します。
これで問題ない場合もありますが、記述したスタイル指定が正しく反映されない場合も多いです。
.container { clear: left; } .footer { clear: left; }
フロートの直後に空要素を設置すれば解決
float
を指定する要素の直後に、空要素を設置してclear
を指定します。
<div class="container"> <div class="item">AAA</div> <div class="item">BBB</div> <div class="item">CCC</div> <div class="clear-element"></div><!-- 空要素 --> </div>
.clear-element { clear: both; }
クリアフィックスを使えばキレイ
HTML文中に空要素を記述せず、:after
というCSSの擬似要素を用いて空要素を作成します。
これならば、デザインのためだけ不要なHTMLタグを記述しなくてすみます。
なお、対応ブラウザはIE8以上です。
IE6,7向けの記述は下記を参考にしてください。
<div class="container clearfix"><!-- clearfixクラスを適用 --> <div class="item">AAA</div> <div class="item">BBB</div> <div class="item">CCC</div> </div>
.clearfix:after { clear: both; content: ''; display: block; }
擬似要素:after
について
:after
で作成される要素は、直後ではなく内部の末尾に設置されることに注意してください。