Porque
De la documentación de MDN :
[La propiedad de margen] se aplica a todos los elementos, excepto los elementos con tipos de visualización de tabla distintos de table-caption, table y inline-table
En otras palabras, la marginpropiedad no es aplicable adisplay:table-cell elementos.
Solución
Considere usar la border-spacingpropiedad en su lugar.
Tenga en cuenta que debe aplicarse a un elemento padre con un display:tablediseño y border-collapse:separate.
Por ejemplo:
HTML
<div class="table">
<div class="row">
<div class="cell">123</div>
<div class="cell">456</div>
<div class="cell">879</div>
</div>
</div>
CSS
.table {display:table;border-collapse:separate;border-spacing:5px;}
.row {display:table-row;}
.cell {display:table-cell;padding:5px;border:1px solid black;}
Diferente margen horizontal y verticalmente
Como mencionó Diego Quirós, la border-spacingpropiedad también acepta dos valores para establecer un margen diferente para los ejes horizontal y vertical.
Por ejemplo
.table {/*...*/border-spacing:3px 5px;} /* 3px horizontally, 5px vertically */
paddingse puede configurar para cualquier selector necesario (por ejemplo, clase o id), como de costumbre. Si quiere decirmarginentre las celdas, eso se puede establecer por separado para los ejes vertical y horizontal estableciendo dos valores enborder-spacing, pero se aplicará a toda la tabla y no a las celdas individuales.Puede usar divs internos para establecer el margen.
JS Fiddle
fuente
.inner-div { margin-right: 5px; } .outer-cell:last-child .inner-div { margin-right: 0; }. Pero también tenga en cuenta este problema: los fondos rojo y verde de este ejemplo no necesariamente coincidirán en altura ya que no están en las celdas.Las celdas de la tabla no respetan el margen, pero en su lugar puede usar bordes transparentes:
Nota: no puede usar porcentajes aquí ... :(
fuente
Si tienes div uno al lado del otro como este
¡Esto debería funcionar!
fuente