Gutes altes Margin Collapsing

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Hier ist ein Blogbeitrag in einem Satz über Margin Collapsing: Wenn zwei Blockelemente übereinander gestapelt sind, ist der vertikale Abstand zwischen ihnen der größere zwischen dem margin-bottom des oberen Elements und dem margin-top des unteren Elements.

Es ist ein bisschen seltsam und Schulterzucken. Paar Vorbehalte damit, wie man erwarten könnte.

Ich finde es faszinierend, wie es zu dem perfekten kleinen Blogbeitrag wird, wenn Leute einen Aha-Moment damit haben. MDN sieht es sogar als passend an, eine eigene Seite zu haben.

Adam Roberts im Jahr 2015:

Obwohl das Margin-Collapsing-Verhalten anfangs etwas unintuitiv ist, erleichtert es die Arbeit mit mehreren verschachtelten Elementen, bei denen das Verhalten oft erwünscht ist.

Andrew Grant im Jahr 2015:

Es ist wahrscheinlich nicht der intuitivste Aspekt von CSS, aber die Erkenntnis hier ist, dass eine gewisse Logik dahinter steckt und sobald man sie gelernt hat, verschwinden Geheimnis und Verwirrung plötzlich!

Geoff Graham im Jahr 2015:

Sehen Sie, wie das Kollabieren von Margins Dinge knifflig machen kann? Ich persönlich stoße frustrierend oft darauf, wenn ich mit Typografie arbeite.

Magnus Benoni im Jahr 2016:

Margin Collapsing kann frustrierend sein, aber wenn man weiß, wann und wie es passiert, wird es einfacher, Probleme zu beheben, wenn sie auftreten.

Ire Aderinokun im Jahr 2017:

Kollabierende Margins können lästig sein, wenn man nicht richtig versteht, wann sie auftreten. Der erste Schritt, um damit umzugehen oder sie zu vermeiden, ist [zu] verstehen, mit welchem Fall von kollabierenden Margins wir es zu tun haben.

Adam Laki im Jahr 2018:

Margin Collapse ist etwas, das in jedem CSS-Buch im ersten oder zweiten Kapitel erwähnt wird. Als ich vor langer Zeit etwas über Stylesheets lernte, habe ich natürlich davon gelesen.

Jonathan Harrell im Jahr 2018:

Das Konzept des Margin Collapse ist grundlegend für das Verständnis des Box-Modells in CSS, aber es ist tatsächlich recht komplex und potenziell verwirrend. Die Spezifikation, die beschreibt, wie Margin Collapse funktioniert, ist gründlich, aber schwer zu verstehen.

Ich führe das alles nicht auf, um zu sagen, dass es ein überbloggtes Thema ist (nichts ist überbloggt), sondern dass es ein interessanter Faden zum Nachverfolgen ist. Wenn so viele Leute das Bedürfnis haben, etwas zu erklären, das letztendlich so klein ist, passiert dort etwas Seltsames (wahrscheinlich Schlechtes).

Zweifellos ist das der Grund, warum es als einer der Fehler im Design von CSS gilt

Die oberen und unteren Ränder einer Box hätten niemals automatisch zusammenfallen dürfen, da dies die Wurzel allen Übels beim Margin Collapsing ist.

Hervorhebung ihrerseits und ist tatsächlich der einzige fette Text in der gesamten Liste.

Wenn Sie das Verhalten stoppen möchten, müssen Sie etwas tun, das wahrscheinlich mehr Nebenwirkungen hat, als es wert ist, wie z. B. die Elemente zu floaten. Es ist nicht so einfach wie das Auslösen eines neuen Block Formatting Context, da dies das ist, was display: flow-root; tut, und das funktioniert nicht.

Sie sind wahrscheinlich besser dran, wenn Sie einfach davon wissen und damit umgehen, wenn es auftritt, indem Sie die Margins systematisch in eine Richtung fließen lassen oder seltsam werden.