--- title: Entendiendo el colapso de margen slug: Web/CSS/CSS_Box_Model/Mastering_margin_collapsing tags: - CSS - CSS Box Model - Guía - Referencia translation_of: Web/CSS/CSS_Box_Model/Mastering_margin_collapsing original_slug: Web/CSS/CSS_Modelo_Caja/Mastering_margin_collapsing ---
{{CSSRef}}

Los márgenes Top y bottom de los bloques a veces están combinados (colapsados) en un solo margen cuyo tamaño es el mayor de los márgenes combinados, un comportamiento conocido como colapso de margen. Ten en cuenta que los márgenes de flotantes y elementos con posición absoluta nunca colapsan.

El colapso de margen ocurre en tres casos básicos:

Hermanos adjacentes
Los márgenes de los hermanos adjacentes son colapsados (excepto cuando el último hermano necesita ser limpiado después de usar los flotantes).
Padre y primer/último hijo
Si no hay un borde, padding, contenido en línea, block formatting context creado, o un limpiado para separar el {{cssxref("margin-top")}} de un bloque del {{cssxref("margin-top")}} de su primer bloque hijo; o no hay borde, padding, contenido en línea, {{cssxref("height")}}, {{cssxref("min-height")}}, o {{cssxref("max-height")}} para separar el {{cssxref("margin-bottom")}} de un bloque del {{cssxref("margin-bottom")}} de su último hijo, entonces esos márgenes colapsan. El margen colapsado termina fuera del padre.
Bloques vacíos
Si no hay borde, padding, contenido en línea, {{cssxref("height")}}, o {{cssxref("min-height")}} para separar el {{cssxref("margin-top")}} de un bloque de su {{cssxref("margin-bottom")}}, entonces sus márgenes superiores e inferiores colapsan.

Cosas a tener en cuenta:

Ejemplos

HTML

<p>El margen inferior de este párrafo está colapsado ....</p>
<p>... con el margen superior de este párrafo, lo que deja un margen de<code>1.2rem</code> entre ellos.</p>

<div>Este elemento padre contiene dos párrafos!
  <p>Este párrafo tiene un margen de <code>.4rem</code>  entre él y el texto anterior.</p>
  <p>Mi margen inferior se colapsa con mi padre, produciendo un margen inferior de <code>2rem</code>.</p>
</div>

<p>Estoy <code>2rem</code> por debajo del elemento de arriba.</p>

CSS

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

p {
  margin: .4rem 0 1.2rem 0;
  background: yellow;
}

Result

{{EmbedLiveSample('Ejemplos', 'auto', 350)}}

 

Especificaciones

Specification Status Comment
{{SpecName("CSS2.1", "box.html#collapsing-margins", "margin collapsing")}} {{Spec2("CSS2.1")}} Initial definition

También puedes ver