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 margin
propiedad no es aplicable adisplay:table-cell
elementos.
Solución
Considere usar la border-spacing
propiedad en su lugar.
Tenga en cuenta que debe aplicarse a un elemento padre con un display:table
diseñ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-spacing
propiedad 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 */