【コーディングTips】伸びないdiv要素を解決 float解除のClearFix
こんにちは、IT開発センター 川崎です。
今日は、CSSレイアウトに関してよくある問題を解決してみましょう。
まずは以下の図をご覧いただけますでしょうか。
一般的によく見かけるレイアウトだとは思いますが、このようなレイアウトを組む際、divタグを使用してコーディングする場合は、どうしてもCSSでFLOAT属性を使用することとなります。
その際のHTMLソースの一例として、以下のように記述します。
<div style="border:1px solid #ccc; padding:10px; width:200px"> <div style="float:left; border:1px solid #fcc; width:90px;">Box1</div> <div style="float:right; border:1px solid #ccf; width:90px;">Box2</div> </div>
※例の為、外部CSSを使用せずスタイルを直接記述しております。
基本の記述は上記の方法で、正しく表示されるはずなのですが、子要素がFLOATを行った場合実際ブラウザでは以下の様に表示されてしまいます。
親要素の縦が延びず、子要素を囲んでくれません。
[検証ブラウザ:Internet Explorer8、Firefox4、Safari5、Opera9、Chrome10]
ここで活用するのがClearFixです。
after要素を使用してFLOATを解除することができます。
方法は以下の通りです。
1.CSS内へ以下の記述を行います。
.cfx:after {
content: ".";
display: block;
clear: both;
height: 0;
visibility: hidden;
}
.cfx {
min-height: 1px;
}
* html .cfx {
height: 1px;
/*¥*//*/
height: auto;
overflow: hidden;
/**/
}
2.伸びないdiv要素にClassを当てる
<div style="border:1px solid #ccc; padding:10px; width:200px" class="cfx">
<div style="float:left; border:1px solid #fcc; width:90px;">Box1</div>
<div style="float:right; border:1px solid #ccf; width:90px;">Box2</div>
</div>
以下の図のようにClassを当てただけで、綺麗に囲むことができます。
もちろん、親要素の高さを指定していないので、子要素の高さによって可変します。
このClearFixは上記の検証ブラウザだけではなく、
IE6、IE7、それ以前のIEやMacIEなどでも対応しております。
この方法があれば、無理な<br clear="all" />などの、正しくない記述で無理なFloat解除を行う必要もなくなります。
いろいろ方法がある中の一つとして、ClearFixを紹介させていただきました。




このブログを購読する
2011.04.20











