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 */
padding
se puede configurar para cualquier selector necesario (por ejemplo, clase o id), como de costumbre. Si quiere decirmargin
entre 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