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 */
padding
pode ser configurado para qualquer seletor necessário (por exemplo, classe ou ID), como de costume. Se você quer dizermargin
entre as células, isso pode ser definido separadamente para os eixos vertical e horizontal, definindo dois valores paraborder-spacing
, mas será aplicado a toda a tabela e não a células individuais.Você pode usar divs internos para definir a margem.
JS Fiddle
fonte
.inner-div { margin-right: 5px; } .outer-cell:last-child .inner-div { margin-right: 0; }
. Mas observe também esta dica: os planos de fundo vermelho e verde deste exemplo não necessariamente coincidem em altura, pois não estão nas células.As células da tabela não respeitam a margem, mas você pode usar bordas transparentes:
Nota: você não pode usar porcentagens aqui ... :(
fonte
Se você tem div um ao lado do outro assim
Isso deve funcionar!
fonte