Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Beherrschung des Zusammenfallens von Rändern

Die oberen und unteren Ränder von Blockelementen werden manchmal zu einem einzigen Rand zusammengeführt (kollabiert), dessen Größe der größte der einzelnen Ränder ist (oder einer von ihnen, wenn sie gleich sind). Dieses Verhalten wird als Margin Collapse bezeichnet. Beachten Sie, dass die Ränder von fließenden und absolut positionierten Elementen niemals kollabieren.

Das Zusammenfallen der Ränder tritt in drei grundlegenden Fällen auf:

Angrenzende Geschwister

Die Ränder angrenzender Geschwister kollabieren (außer wenn das nachfolgende Geschwister bereinigt werden muss, um Fließendes zu umgehen).

Kein Inhalt zwischen Eltern und Nachkommen

Die vertikalen Ränder zwischen einem Eltern-Block und seinen Nachkommen können kollabieren. Dies geschieht, wenn es keinen trennenden Inhalt zwischen ihnen gibt. Insbesondere tritt dies in zwei Hauptfällen auf:

In beiden Fällen verhindert das Erstellen eines neuen Block-Formatierungskontextes beim Elternteil ebenfalls, dass seine Ränder mit denen seiner Kinder kollabieren.

Leere Blöcke

Wenn es keinen Rand, kein Padding, keinen Inline-Inhalt, height oder min-height gibt, um den margin-top eines Blocks von seinem margin-bottom zu trennen, kollabieren seine oberen und unteren Ränder.

Einige Anmerkungen:

  • Ein komplizierteres Zusammenfallen der Ränder (von mehr als zwei Rändern) tritt auf, wenn die obigen Fälle kombiniert werden.
  • Diese Regeln gelten auch für Ränder, die null sind, sodass der Rand eines Nachkommen außerhalb seines Elternteils endet (entsprechend den obigen Regeln), unabhängig davon, ob der Rand des Elternteils null ist.
  • Wenn negative Ränder einbezogen werden, ist die Größe des kollabierten Randes die Summe des größten positiven Randes und des kleinsten (negativsten) negativen Randes.
  • Wenn alle Ränder negativ sind, ist die Größe des kollabierten Randes der kleinste (negativste) Rand. Dies gilt sowohl für benachbarte als auch für verschachtelte Elemente.
  • Das Zusammenfallen der Ränder ist nur in vertikaler Richtung relevant.
  • Ränder kollabieren nicht in einem Container mit display auf flex oder grid.

Beispiele

HTML

html
<p>The bottom margin of this paragraph is collapsed …</p>
<p>
  … with the top margin of this paragraph, yielding a margin of
  <code>1.2rem</code> in between.
</p>

<div>
  This parent element contains two paragraphs!
  <p>
    This paragraph has a <code>.4rem</code> margin between it and the text
    above.
  </p>
  <p>
    My bottom margin collapses with my parent, yielding a bottom margin of
    <code>2rem</code>.
  </p>
</div>

<p>I am <code>2rem</code> below the element above.</p>

CSS

css
div {
  margin: 2rem 0;
  background: lavender;
}

p {
  margin: 0.4rem 0 1.2rem 0;
  background: yellow;
}

Ergebnis

Siehe auch