別の回答で述べたように、欠点hidden
は、驚くべきことに、ドロップダウンメニューのようなものを隠すことです。ただし、親コンテナをフローティングすることにより、1行で含める別の方法があります。これは通常overflow: hidden
、欠点がある場合に機能します。また、フローティングは、特にリストで、多くのレガシーIEの問題に役立ちます。幅を使用できる場合は、「フロートインフロート」またはを使用しdisplay: inline-block
ます。
「clearfix」が役に立たないと言っているわけではありませんが、CMSテーマ(WordpressやDrupalなど)に広く定着しすぎているため、多くの場合、実際には必要のないdivで使用されすぎていると思います。クリアまたは封じ込める。
clearfixを超えて、オーバーフローもフロートも使用できない状況は実際には考えられませんが、私の脳はホリデーモードになっていますが、clearfixはコピー/貼り付けソリューションであり、推奨するのが最も簡単なソリューションです。ただし、これはIEのhasLayoutを設定するものである必要があります。もちろん、オーバーフローとフロートの両方も同様に設定されます。
加え
て、これはちょうど再び現れました:そして脳は休日モードではありません。
私は本当にそう思い始めています、clearfixは必要ありません(少なくとも私はそれがどこにあるかの例をまだ見つけていません)上記の@thirtydotの例でさえも回避できdisplay: inline-block
、IE6サポートを持っています、コンテナは固定幅ですIE7以下のhasLayout要件があり、他のすべてのブラウザーのインラインブロックにすることで、中央に配置でき、コンテナーが垂直方向に伸びている間、「オフセット」スティッキーアウト要素が正常に機能します。
:before
また、clearfixハックを使用して、マージンを折りたたむための新しい改善されたclearfixへの参照も確認しまし :after
たが、何かが欠けていない限り 、デモに欠陥pre
があります。要素と「clearfixed」ボックス に不均一な空白があります。実際にはfloatは含まれていません。要素をfloatするとすぐに、各メソッドは同じように実行されます。
要素のマージンはpre
他の要素と同じように反応しないことに注意してください(したがって、テスト中に同じ画像を表示するには、マージンの代わりにパディングを試してください)。また、IEにマージンが適切に含まれない別のIE「foible」もあります。それらは明示的に指定されておらず、デモでは明示的なマージンがありますが、そのページのTJKによってデモされたように、すべてのものがclearfixed要素に等しいとは限らず、通常のブロック要素にマージンを人為的に封じ込めていますh2
。p
ブラウザはとにかくこれを異なる方法で行うため、1pxの上下のパディングとほぼ同じ方法です!
次に、要素をそれらのコンテナ内にフロートさせます(とにかくクリアするポイント)-新しいブロックフォーマットコンテキスト内の場合と同様に、余白にはおそらく必要に応じて含まれます-:before
ハックに余分な部分はありません、すべてのclearfixバリエーションは同じようにうまく機能します!
リロードされたデモを見る
したがって、私の考えでは、この「clearfix」方法はもう必要ありません。古いIEのhaslayoutを使用して、新しいブロックフォーマットコンテキストを作成するための最良の方法を見つけるだけです。両方のプロパティは同じです。
TJKが彼の記事で指摘しているように:http ://www.yuiblog.com/blog/2010/09/27/clearfix-reloaded-overflowhidden-demystified/
より良い選択肢
floatを含む要素に幅を適用できる場合は、次を使用するのが最善のオプションです。
display: inline-block;
width: <any
explicit value>;
それは公平だと思います。100%の要素でパディングが必要な場合でも、box-sizing
.clearfix {
display: inline-block;
width: 100%;
*width: auto;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}