フロートのしくみ
ページにフローティング要素が存在する場合、新聞の画像の周りをテキストが移動するのと同じように、非フローティング要素がフローティング要素をラップします。ドキュメントの観点(HTMLの本来の目的)から、これはフロートがどのように機能するかです。
float
vsdisplay:inline
が発明される前は、Webサイトは要素を並べて設定するためにdisplay:inline-block
使用されていました。後者では、要素の寸法(幅と高さ)や垂直方向のパディング(上下)を設定できないため、よりも優先されます。これは、フロート要素がブロック要素として扱われるために実行できます。float
float
display:inline
フロートの問題
主な問題はfloat
、意図した目的に反して使用していることです。
もう1つは、float
ブロックレベルの要素を並べることができますが、フロートはそのコンテナに形状を与えないということです。これposition:absolute
は、要素が「レイアウトから取り出された」ようなものです。たとえば、空のコンテナにフローティング100px x 100pxが含まれている場合、はコンテナに<div>
100px<div>
の高さを与えません。
とは異なりposition:absolute
、それを取り巻くコンテンツに影響します。フロートされた要素の後のコンテンツは、要素を「ラップ」します。それは、新聞のテキストが画像の周りをどのように流れるかのように、その横にレンダリングし、次にその下にレンダリングすることから始まります。
救助へのClearfix
clearfixが行うことは、フロートまたはフロートを含むコンテナーの後にコンテンツを強制的にその下にレンダリングすることです。clear-fixには多くのバージョンがありますが、その名前は、一般的に使用されているバージョン(CSSプロパティを使用するバージョン)に由来していますclear
。
例
ブラウザとユースケースに応じて、clearfixを実行するいくつかの方法があります。clear
完全なクロスブラウザーのクリアフィックスを実現するには、CSSでプロパティを使用する方法と、各ブラウザーでfloatがどのようにレンダリングされるかを知る必要があるだけです。
あなたが持っているもの
提供されるスタイルは、下位互換性のあるclearfixの形式です。このclearfixに関する記事を見つけました。結局のところ、これは古いクリアフィックスであり、まだ古いブラウザに対応しています。記事には、より新しく、よりクリーンなバージョンもあります。内訳は次のとおりです。
最初のclearfixはclear:both
、ターゲット要素と次の要素の間に、スタイルが設定された非表示の疑似要素を追加します。これにより、疑似要素がターゲットの下にレンダリングされ、次の要素が疑似要素の下にレンダリングされます。
display:inline-block
2つ目は、以前のブラウザでサポートされていないスタイルを追加します。inline-blockはinlineに似ていますが、幅、高さ、垂直方向のパディングなど、要素をブロックするいくつかのプロパティを提供します。これはIE-MACを対象としていました。
display:block
これは、上記のIE-MACルールによる再適用でした。このルールはIE-MACから「隠されていました」。
全体として、これらの3つのルールは.clearfix
、古いブラウザーを念頭に置いて、クロスブラウザーの動作を維持します。