Un buen truco para deshabilitar el colapso del margen que no tiene impacto visual, que yo sepa, es configurar el relleno del padre para 0.05px
:
.parentClass {
padding: 0.05px;
}
El relleno ya no es 0, por lo que el colapso ya no ocurrirá, pero al mismo tiempo el relleno es lo suficientemente pequeño como para que visualmente se redondee a 0.
Si se desea algún otro relleno, aplique el relleno solo en la "dirección" en la que no se desea el colapso del margen, por ejemplo padding-top: 0.05px;
.
Ejemplo de trabajo:
.noCollapse {
padding: 0.05px;
}
.parent {
background-color: red;
width: 150px;
}
.children {
margin-top: 50px;
background-color: lime;
width: 100px;
height: 100px;
}
<h3>Border collapsing</h3>
<div class="parent">
<div class="children">
</div>
</div>
<h3>No border collapsing</h3>
<div class="parent noCollapse">
<div class="children">
</div>
</div>
Editar: cambió el valor de 0.1
a 0.05
. Como Chris Morgan mencionó en un comentario a continuación, y de esta pequeña prueba , parece que, de hecho, Firefox toma 0.1px
en cuenta el relleno. Sin embargo, 0.05px
parece hacer el truco.