Simplemente no puedo entender la situación cuando este ingenioso conjunto de reglas puede ser útil. Rompen la simplicidad del modelo de caja y proporcionan una fuente infinita de problemas cuando combina diferentes piezas de diseño. Entonces, ¿cuál es el motivo?¿Por qué razón las reglas de colapso de margen se introdujeron en CSS?
Rules para la referencia.
Actualización: Las reglas son bastante lógicas para los elementos hermanos, pero ¿por qué los márgenes deberían propagarse a los elementos primarios hasta el árbol? ¿Qué tipo de problemas resuelve?
Por ejemplo:
<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>
divs de nivel superior están espaciados uno de otro por 100px.
En realidad, preferiría el alternativa por su claridad. Aunque estoy de acuerdo en algunas situaciones, el colapso de márgenes ayuda. –
Eso es bastante lógico para los elementos hermanos. Pero todavía no tengo una idea de por qué los márgenes de elementos infantiles deberían afectar los márgenes del elemento principal. – actual
@actual: El espacio entre el elemento hijo y los límites del elemento padre debe ser el mismo independientemente de los elementos que lo rodean. Los elementos circundantes no pueden introducir espacios entre los límites del elemento primario y el elemento secundario, ya que eso podría cambiar el tamaño del elemento principal, por lo que el margen también debe alejar el elemento principal, no solo el elemento hijo. – Guffa