1

Firefox のマージン設定で何か奇妙なことが起こっています。ユーザーがログインしているときに、id が "wrap" で上部マージンが 20px の div があり、id が user_nav の div がラップ div の上に表示されます。このdivの上にマージンが必要ですが、Firefoxは、ラップdivにある上部のマージンをその上のuser_nav divに伝播する未知の理由のためです。他のブラウザーでは発生していません。

ラップ div から上部マージンを削除すると、両方から削除されます。

user_nav div に負の上部マージンを与えることでそれを取り除くことができますが、それは他のすべてのブラウザーを台無しにします。

div#user_nav {
width: 980px;
margin: 0 auto;
}


div#wrap {
width: 980px;
margin: 20px auto 30px auto;
}

何が起こっているかについてのアイデアはありますか?

ありがとう

ロブ・フェンウィック

4

1 に答える 1

1

これは確かに風変わりな動作です。これは、ブロック要素のクリアに関連するこの古いバグの影響の 1 つ (またはその多くの重複の 1 つ) のようです。

https://bugzilla.mozilla.org/show_bug.cgi?id=451791

これを回避する 1 つの方法は、 を取り除き、<div class="clear">代わりにクリアするオーバーフロー メソッドを使用することです (ただし、常に可能であるとは限りません。たとえば、明らかに、クリアされた要素の内側にコンテンツがあり、その外側に拡張される場合):

http://www.quirksmode.org/css/clearing.html

つまり、フロートをクリアする代わりに、<div class="clear">内部から削除し、CSS で(および) をuser_nav_frame適用します。overflow: hiddenwidth: 100%

div#user_nav_frame {
    background-color: #0A4D84;
    overflow: hidden;
    width: 100%;
}

JSFiddle: http://jsfiddle.net/69aD9/2/

これがうまくいかない場合は、カウンターハックもあります。上記のバグレポートを参照してください。

于 2013-04-28T21:28:43.107 に答える