このclear fix に基づいて、margin uncollapse を追加した clear と collapse の修正:
.group:before, /* :before to uncollapse the top margin */
.group:after{
display: block;
clear: both; /* clear fix */
content: "\a0 "; /* - just a space doesn't uncollapse margins */
visibility: hidden; /* make sure not to show anything */
height: 0;
}
.group{
zoom: 1; /* solves it all for IE < 8, and doesn't hurt other browsers */
}
デモ: jsFiddle、 netrenderer を使用した IE7 のレンダリング
content: "\a0 ";
これは空白以外の文字 ( など)と同等で
あり、その代わりに使用されることに注意してください.
。これにより、ブロックを選択してコピーしたときに、一部のブラウザー (IE9 など) で発生する余分な文字が表示されなくなります。
このソリューションの欠点は次のとおりです。
:before
と:after
が定義されているため、使用する場合は特に注意が必要です。
- この修正を適用する新しいセレクターごとに、セレクターを 3 回指定する必要があります。
- 非常に短く/些細なことではありません。
同様のソリューションがYUI で使用されており、この記事で説明されています(ただし はありません
)。