Ich kann einfach nicht die Situation herausfinden, wenn dieses clevere Regelwerk hilfreich sein kann. Sie durchbrechen die Einfachheit des Boxmodells und bieten unendliche Problemquellen, wenn Sie verschiedene Teile des Layouts miteinander kombinieren. Also, was ist der Grund?Aus welchem Grund wurden Margin-Collapse-Regeln in CSS eingeführt?
Rules für die Referenz.
Update: Regeln sind ziemlich logisch für Geschwisterelemente, aber warum sollten Margen auf Elternelemente bis zum Baum übertragen werden? Welche Art von Problemen löst das?
Zum Beispiel:
<div style="margin: 20px; background-color: red;">
<div style="margin: 20px;">
<p style="margin: 100px;">red</p>
</div>
</div>
<div style="margin: 20px; background-color: blue;">blue</div>
Top-Level-divs sind voneinander im Abstand von 100px.
bietet zu erreichen, ich würde es vorziehen, die Alternative für seine Klarheit. Obwohl ich in einigen Situationen zustimme, hilft Margin Collapse. –
Das ist ziemlich logisch für Geschwisterelemente. Aber ich habe immer noch keine Ahnung, warum die Ränder von Kindelementen die Ränder von Elternelementen beeinflussen sollten. – actual
@actual: Der Abstand zwischen dem untergeordneten Element und den Grenzen des übergeordneten Elements muss unabhängig von den umgebenden Elementen gleich sein. Die umgebenden Elemente können keinen Abstand zwischen den Grenzen des übergeordneten Elements und des untergeordneten Elements einfügen, da dies die Größe des übergeordneten Elements ändern könnte. Daher muss der Rand auch das übergeordnete Element wegschieben, nicht nur das untergeordnete Element. – Guffa