作成される設計に応じて、以下の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>
1つの欠点は、外部要素でマージンとパディングの特定の組み合わせを使用するとスクロールバーが表示される可能性がありますが、マージンとパディングを要素を含む別の親に配置することでこれを解決できます。
'overflow:hidden'を使用することもclearfixソリューションですが、スクロールバーはありませんが、使用hidden
すると、含まれている要素の外側にあるコンテンツが切り取られます。
注:img
この例では、floated要素はタグですが、任意のhtml要素にすることができます。
Clearfix Reloaded
CSSMojoのThierry Koblentzが書いた:最新のclearfix reloaded。彼はoldIEのサポートを廃止することで、ソリューションを1つのcssステートメントに簡略化できると指摘しました。さらに、display: block
(の代わりにdisplay: table
)を使用すると、clearfixを持つ要素が兄弟であるときにマージンが適切に折りたたまれます。
.container::after {
content: "";
display: block;
clear: both;
}
これはclearfixの最新バージョンです。
⋮
⋮
古いClearfixソリューション
以下の解決策は、最新のブラウザーには必要ありませんが、古いブラウザーをターゲットにする場合に役立つことがあります。
これらのソリューションはブラウザのバグに依存しているため、上記のソリューションがどれも機能しない場合にのみ使用してください。
おおまかに年代順にリストされています。
「Beat That ClearFix」、最新のブラウザーのクリアフィックス
CSS Mojoの Thierry Koblentz氏は、最新のブラウザーを対象とする場合、zoom
および::before
プロパティ/値を削除して、次のように使用できることを指摘しています。
.container::after {
content: "";
display: table;
clear: both;
}
このソリューションは、意図的にIE 6/7をサポートしていません。
ティエリーも申し出:「注意の言葉:あなたはそれのために行く、ゼロから新しいプロジェクトを開始、しかし、あなたはをoldIEをサポートしていないにもかかわらず、既存のルールを防ぐために、あなたが今持っている1と、この技術を交換していない場合マージンの崩壊。」
マイクロClearfix
最新で世界的に採用されている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;
}
display
プロパティを使用してIEの「hasLayout」を設定する代わりに、要素の「hasLayout」をトリガーするために他のプロパティを使用できます。
.container {
overflow: hidden;
zoom: 1;
display: block;
}
overflow
プロパティを使用してフロートをクリアする別の方法は、アンダースコアハックを使用することです。IEはアンダースコアが前に付いた値を適用しますが、他のブラウザは適用しません。zoom
プロパティは、トリガーhasLayoutを IEに:
.container {
overflow: hidden;
_overflow: visible; /* for IE */
_zoom: 1; /* for IE */
}
これは機能しますが、ハックを使用することは理想的ではありません。
PIE:簡単な決済方法
この古い "Easy Clearing"メソッドには、配置された要素をコンテナの境界の外にぶら下げることができるという利点がありますが、より複雑なCSSが必要になります。
このソリューションはかなり古いですが、Position Is EverythingのEasy Clearingについてすべて学ぶことができます。http://www.positioniseverything.net/easyclearing.html
「クリア」プロパティを使用する要素
何かをすばやく平手打ちするときの(いくつかの欠点を伴う)迅速で汚れたソリューション:
<br style="clear: both" /> <!-- So dirty! -->
欠点
- メディアクエリに基づいてレイアウトスタイルが変更されると、応答が遅くなるため、望ましい効果が得られない可能性があります。純粋なCSSのソリューションがより理想的です。
- セマンティック値を必ずしも追加することなく、HTMLマークアップを追加します。
- CSS内の「clearfix」の単一ソリューションへのクラス参照と、html内のそれへのクラス参照ではなく、各インスタンスのインライン定義とソリューションが必要です。
- 他の人がそれを回避するためにもっとハックを書かなければならないかもしれないので、それは他の人にとってコードを扱うのを難しくします。
- 今後、別のclearfixソリューションを使用する必要がある場合は、戻っ
<br style="clear: both" />
てマークアップの周りに散らばっているすべてのタグを削除する必要はありません。