作成するデザインに応じて、以下の clearfix CSS ソリューションにはそれぞれ独自の利点があります。
clearfix には便利なアプリケーションがありますが、ハックとしても使用されています。clearfix を使用する前に、これらの最新の css ソリューションが役立つ可能性があります。
最新の Clearfix ソリューション
コンテナoverflow: auto;
フローティング要素をクリアする最も簡単な方法はoverflow: auto
、含まれている要素のスタイルを使用することです。このソリューションは、最新のすべてのブラウザーで機能します。
<div style="overflow: auto;">
<img
style="float: right;"
src="path/to/floated-element.png"
width="500"
height="500"
>
<p>Your content here…</p>
</div>
外部要素でマージンとパディングの特定の組み合わせを使用すると、スクロールバーが表示される可能性がありますが、これは要素を含む別の親にマージンとパディングを配置することで解決できます。
「overflow: hidden」を使用することも clearfix ソリューションですが、スクロールバーはありませんが、使用hidden
すると、含まれる要素の外側に配置されたコンテンツがトリミングされます。
注: float 要素はimg
この例ではタグですが、任意の html 要素である可能性があります。
クリアフィックス リロード
CSSMojo のThierry Koblentz は次のように書いています。彼は、oldIE のサポートをやめることで、ソリューションを 1 つの css ステートメントに単純化できると指摘しました。さらに、display: block
( の代わりにdisplay: table
) を使用すると、clearfix を持つ要素が兄弟である場合にマージンを適切に折りたたむことができます。
.container::after {
content: "";
display: block;
clear: both;
}
これは clearfix の最新バージョンです。
⋮</p>
⋮</p>
古い Clearfix ソリューション
以下のソリューションは、最新のブラウザーには必要ありませんが、古いブラウザーを対象とする場合に役立つ場合があります。
これらの解決策はブラウザのバグに依存しているため、上記の解決策がどれもうまくいかない場合にのみ使用してください。
それらは大まかに時系列順にリストされています。
「Beat That ClearFix」、最新ブラウザ向けのクリアフィックス
CSS Mojoの Thierry Koblentz は、最新のブラウザーをターゲットにする場合zoom
、::before
プロパティ/値を削除して、次のように単純に使用できるようになったことを指摘しました。
.container::after {
content: "";
display: table;
clear: both;
}
このソリューションは、意図的に IE 6/7 をサポートしていません。
Thierry も次のように述べています。マージンの崩壊。」
マイクロクリアフィックス
世界的に採用されている最新の clearfix ソリューションである、Nicolas Gallagher による Micro Clearfixです。
既知のサポート: Firefox 3.5 以降、Safari 4 以降、Chrome、Opera 9 以降、IE 6 以降
.container::before, .container::after {
content: "";
display: table;
}
.container::after {
clear: both;
}
.container {
zoom: 1;
}
オーバーフロー プロパティ
この基本的な方法は、配置されたコンテンツがコンテナの境界の外に表示されない通常のケースに適しています。
http://www.quirksmode.org/css/clearing.html
-この手法に関連する一般的な問題、つまりコンテナーでの設定を解決する方法について説明しています。width: 100%
.container {
overflow: hidden;
display: inline-block;
display: block;
}
プロパティを使用して IE の「hasLayout」を設定するのではなく、要素の「hasLayout」をトリガーするdisplay
ために他のプロパティを使用できます。
.container {
overflow: hidden;
zoom: 1;
display: block;
}
overflow
プロパティを使用してフロートをクリアする別の方法は、アンダースコア ハックを使用することです。IE はアンダースコアで始まる値を適用しますが、他のブラウザーは適用しません。このzoom
プロパティは、IE でhasLayoutをトリガーします。
.container {
overflow: hidden;
_overflow: visible; /* for IE */
_zoom: 1; /* for IE */
}
これは機能しますが...ハックを使用するのは理想的ではありません。
PIE:イージークリアリング方式
この古い「Easy Clearing」メソッドには、よりトリッキーな CSS を犠牲にして、配置された要素をコンテナーの境界の外にぶら下げることができるという利点があります。
このソリューションはかなり古いものですが、Position Is Everything で Easy Clearing のすべてを学ぶことができます: http://www.positioniseeverything.net/easyclearing.html
「clear」プロパティを使用する要素
何かをすばやく叩きつけるときの、簡単で汚い解決策 (いくつかの欠点があります):
<br style="clear: both" /> <!-- So dirty! -->
欠点
- レスポンシブではないため、メディア クエリに基づいてレイアウト スタイルが変更された場合、目的の効果が得られない可能性があります。純粋な CSS でのソリューションがより理想的です。
- 必ずしもセマンティック値を追加することなく、html マークアップを追加します。
- css 内の「clearfix」の単一のソリューションへのクラス参照と html 内のそれへのクラス参照ではなく、インスタンスごとにインライン定義とソリューションが必要です。
- それを回避するには、より多くのハックを書かなければならない可能性があるため、他の人にとってはコードを扱うのが難しくなります。
- 将来、別の clearfix ソリューションを使用する必要がある場合や使用したい場合に
<br style="clear: both" />
、マークアップの周りに散らばっているすべてのタグを削除する必要はありません。