.clearfix
で定義されていless/mixins.less
ます。その定義のすぐ上に、この記事へのリンクを含むコメントがあります。
新しいマイクロ クリアフィックス ハック
この記事では、すべてがどのように機能するかを説明しています。
更新:はい、リンクのみの回答は不適切です。私はこの回答を投稿した時点でもこれを知っていましたが、著作権、盗作、およびあなたが持っているもののために、コピーと貼り付けがOKだとは感じませんでした. しかし、元の記事にリンクしたので、今は大丈夫だと感じています。ただし、著者の名前も言及する必要がありますが、クレジットにはニコラス・ギャラガーが含まれます。記事の内容は次のとおりです (「Thierry の方法」とは、Thierry Koblentz の「clearfix reloaded」</a> を指していることに注意してください):
この「マイクロ クリアフィックス」は疑似要素を生成し、それら
display
を に設定しtable
ます。これにより、匿名のテーブル セルと新しいブロック フォーマット コンテキストが作成されます。これは、:before
疑似要素が上部マージンの崩壊を防ぐことを意味します。:after
疑似要素は、フロートをクリアするために使用されます。その結果、生成されたコンテンツを非表示にする必要がなくなり、必要なコードの総量が削減されます。
:before
フロートをクリアするためにセレクターを含める必要はありませんが、最新のブラウザーでトップマージンが崩れるのを防ぎます。これには 2 つの利点があります。
注意: IE 6/7 では、新しいブロック フォーマット コンテキスト内にフロートの下マージンが含まれない場合があります。詳細については、CSS 式を使用した IE でのより良いフロート コンテインメントを参照してください。
content:" "
(コンテンツ文字列内のスペースに注意してください) を使用すると、属性が HTML のどこかに存在する場合に、clearfix 要素の周囲にスペースが作成さ
れるOpera のバグを回避できます。contenteditable
この修正を見つけてくれた Sergio Cerrutti に感謝します。別の修正方法は、 を使用することfont:0/0 a
です。
レガシー Firefox
visibility:hidden
Firefox < 3.5 では、挿入された文字を非表示にする機能を追加して、Thierry の方法を使用すると効果的です。これは、特定の状況 (例: jsfiddle.net/necolas/K538S/ )で、古いバージョンの Firefox が とその最初の子要素content:"."
の間に余分なスペースが表示されるのを避ける必要があるためです。body
overflow:hidden
コンテナー要素に適用する、または
コンテナー要素に適用するなど、新しいブロック フォーマット コンテキストを作成する代替の float-containment メソッドdisplay:inline-block
も、レガシー バージョンの Firefox でこの動作を回避します。