ダウンロード サンプルファイル (8.4 KB)
「clearfix」でフッタの回り込みを解除する
次に、(X)HTMLのソース上、コンテナにフッタが含まれていない場合の例を見てみましょう。
<div id="header">ヘッダ</div> <div id="container"> <div id="main">メイン</div> <div id="sub">サブ</div> </div> <div id="footer">フッタ</div>
この場合、先の例のように「clear:both」を指定しても、コンテナの背景色は緑色にならず、白色のままです。
このように、フッタがコンテナに含まれない場合には、「clearfix」というテクニックを使用するのが一般的です。「clearfix」にも、いろいろな種類がありますが、ここでは一般的に知られている「clearfix」を紹介します。
.clearfix:after {
content:".";
display:block;
height:0;
clear:both;
line-height:0;
visibility:hidden;
}
.clearfix {
display: inline-block; /* for IE 7 */
}
/* Hides from Mac IE \*/
* html .clearfix { height: 1%; }
.clearfix { display: block; }
/* End hide from Mac IE */
やや複雑な仕組みになりますが、これは、after擬似要素を利用して、「.」を生成し、「clear:both」を適用するという仕組みです。Win IE 7以下は、after擬似要素に対応していないので、「display: inline-block」を使ってfloatをクリアする効果を得ています。「display: inline-block」は、Mac IEでもfloatをクリアする効果がありますが、Win IEと異なり、「display: block」に戻すと、floatをクリアする効果も消えてしまうので、その部分にHolly Hack(注1)を用い、適用対象からMac IEを除外しています。
使い方は、フロートを解除したい親要素(ここではコンテナ)に適用させて使います。例では複数の箇所で使えるように、クラスを利用していますが、一箇所しか使用しない場合には、「div#container」に直接適用しても良いでしょう。「clearfix」適用後、コンテナの背景色は指定した緑色になります。
ポジションニング型のレイアウトでは、フッタの重なりを制御するのが少々ネックになりますが、フロートを使ったレイアウトでは、「clearプロパティ」または「clearfix」を使用することで、フッタの回り込みを解除し、重なりを制御することができるのが特徴です。「clearプロパティ」と「clearfix」は、フッタがコンテナに含まれているかどうかで使い分けると良いでしょう。
Mac IE 5をスタイルの適用対象から外すことができるコメントハック。CSSのコメントの書式は、「*/」で閉じることになっているが、「\*/」というように、「\(欧文フォントではバックスラッシュ)」を付けて閉じると、次の「*/」が現れるまで、Mac IE 5にスタイルが適用されない。
全体をセンタリングする
これまでの例では、全体幅を100%としていますが、コンテナの幅をピクセルで指定し、幅を固定することも可能です。このとき、全体をセンタリング(中央寄せ)するには、全体を囲むコンテナの左右マージンの値に「auto」を指定します。
body {
text-align: center; /* for Win IE 6 */
}
div#container {
width: 500px;
margin: 0 auto; /* 左右のマージンを「auto」に指定 */
background-color: green;
text-align: left; /* for Win IE 6 */
}
ただし、Win IE 6の過去互換モードでは、このように指定してもセンタリングされない(「標準モード」ではセンタリングされる)ため、この問題を回避するには、body要素に「text-align: center」と指定します。IE 6の場合、さらに問題があり、body要素に「text-align: center」を指定すると、直接の子要素のコンテナ(div#container)だけでなく、子要素となるすべてのブロックレベル要素がセンタリングされてしまうため、コンテナに「text-align: left」の指定を併記しておくようにしましょう。
背景色の段差を解消する
メインコンテンツとサブコンテンツの高さは、それぞれの内容量によって決定します。そのため、これらの領域に背景色を設定している場合、次の図9のように、メインとサブの内容量によって、背景色の領域に段差が生じてしまうことになります。

この背景色の段差を回避するには、サブとメインの背景色を基にした1ピクセルの高さの画像を用意し、コンテナの背景画像として、垂直方向に繰り返し表示するよう指定します。

ただし、この手法を使うには、コンテナの幅が固定幅で、さらにメインかサブのどちらかあるいは両方が固定幅である必要があります。
div#container {
background: green url("bg.gif") repeat-y; /* 背景画像を指定 */
color: black;
}
この記事は参考になりましたか?
- クロスブラウザなレイアウトデザインテクニック連載記事一覧
-
- CSSでマルチカラムレイアウト
- ページレイアウトに使えるCSSプロパティ
- ナビゲーションの実践的なスタイリング
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 宮本麻矢(ミヤモト マヤ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア



