Causa
Na documentação do MDN :
[A propriedade margin] se aplica a todos os elementos, exceto os elementos com tipos de exibição de tabela diferentes de legenda, tabela e tabela embutida
Em outras palavras, a margin
propriedade não é aplicável a display:table-cell
elementos.
Solução
Considere usar a border-spacing
propriedade.
Observe que ele deve ser aplicado a um elemento pai com um display:table
layout e border-collapse:separate
.
Por exemplo:
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;}
Margem diferente na horizontal e na vertical
Conforme mencionado por Diego Quirós, a border-spacing
propriedade também aceita dois valores para definir uma margem diferente para os eixos horizontal e vertical.
Por exemplo
.table {/*...*/border-spacing:3px 5px;} /* 3px horizontally, 5px vertically */