2008-09-19 15 views

Antwort

73

Nr Wenn Sie zwei benachbarte vertikale Ränder haben, desto größer der beiden verwendet wird und die anderen ignoriert. Wenn Sie beispielsweise zwei Blockanzeigeelemente haben, A, gefolgt von B darunter, und A hat einen unteren Rand von 3em, während B einen oberen Rand von 2em hat, dann ist der Abstand zwischen sie werden 3em sein.

Wenn Sie einen Rahmen oder einen Abstand festlegen, wird das Zusammenklappen verhindert. Im obigen Beispiel ist der Abstand zwischen den beiden Elementen dann 5em.

Wenn Sie keine Ränder festlegen, werden die Ränder nicht reduziert. Es hat überhaupt nichts mit dem verwendeten Elementtyp zu tun - es gilt für alle Elementtypen, nicht nur <div> Elemente.

Lesen Sie the CSS 2.1 specification für weitere Details.

+6

Die Antwort wird mit einigen Änderungen aktualisiert: 1. Im '3em/2em' Beispiel möchten Sie vielleicht stattdessen absolute Einheiten verwenden; in diesem Fall ist die 2em/könnte/größer als die 3em 2. "Wenn Sie einen Rahmen oder Padding ..." - Dies ist nur in bestimmten Fällen, nicht in der Standard "A gefolgt von B" eine –

+0

3. "Wenn Sie keine ..." konventionell für DIVs, aber Margin-Kollaps WILL beeinflussen die meisten Elemente standardmäßig –

+7

+1 - gute Antwort. Randkollaps tritt auch nicht auf, wenn Elemente floaten, absolut positioniert oder Inline-Block sind. Weitere Informationen: http://reference.sitepoint.com/css/collapsingmargins –

4

„der Ausdruck Ränder Kollabieren bedeutet, dass angrenzende Ränder (keine nicht-leeren Inhalt, Klotzen oder Randbereiche oder Zwischenraum, sie separat) von zwei oder mehr Box verbinden (die miteinander oder nested nächste sein können) zu bilden, eine einzige Marge. "

Quelle: Box Model - 8.3.1 Collapsing margins