espacio entre divs-tabla de visualización-celda


Tengo aquí dos divs:

<div style="display:table-cell" id="div1">
    content
</div>

<div style="display:table-cell" id="div2">
    content
</div>

¿Hay una manera de hacer espacio entre estos dos divs (que tienen display:table-cell)?

Author: Hashem Qolami, 2013-08-21

5 answers

Puede utilizar border-spacing propiedad:

HTML:

<div class="table">
    <div class="row">
        <div class="cell">Cell 1</div>
        <div class="cell">Cell 2</div>
    </div>
</div>

CSS:

.table {
  display: table;
  border-collapse: separate;
  border-spacing: 10px;
}

.row { display:table-row; }

.cell {
  display:table-cell;
  padding:5px;
  background-color: gold;
}

Demostración de JSBin

¿Alguna otra opción?

Bueno, no realmente.

Por Qué?

  • marginproperty no es aplicable a los elementos display: table-cell.
  • La propiedad padding no crea espacio entre los bordes de las celdas.
  • float propiedad destruye el comportamiento esperado de table-cell elementos que pueden ser tan altos como su elemento padre.
 175
Author: Hashem Qolami,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-20 23:06:19

Use bordes transparentes si es posible.

JSFiddle Demo

Https://jsfiddle.net/74q3na62 /

HTML

<div class="table">
    <div class="row">
        <div class="cell">Cell 1</div>
        <div class="cell">Cell 2</div>
        <div class="cell">Cell 3</div>
    </div>
</div>

CSS

.table {
  display: table;
  border: 1px solid black;
}

.row { display:table-row; }

.cell {
  display: table-cell;
  background-clip: padding-box;
  background-color: gold;
  border-right: 10px solid transparent;
}

.cell:last-child {
  border-right: 0 none;
}

Explicación

Puede usar la propiedad border-spacing, pero no solo genera espacio entre las celdas de la tabla, sino también entre las celdas de la tabla y el contenedor de la tabla.

Si no necesita bordes visibles en las celdas de la tabla, debe usar transparent bordes para generar celdas margen. Los bordes transparentes requieren la configuración background-clip: padding-box; porque, de lo contrario, el color de fondo de las celdas de la tabla se muestra en el borde.

Los bordes transparentes y el clip de fondo son compatibles con IE9 hacia arriba (y todos los demás navegadores modernos). Si necesita compatibilidad con IE8 o no necesita espacio transparente real, simplemente puede establecer un color de borde blanco y dejar el background-clip fuera.

 16
Author: Max,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-03 11:08:44
<div style="display:table;width:100%"  >
<div style="display:table-cell;width:49%" id="div1">
content
</div>

<!-- space between divs - display table-cell -->
<div style="display:table-cell;width:1%" id="separated"></div>
<!-- //space between divs - display table-cell -->

<div style="display:table-cell;width:50%" id="div2">
content
</div>
</div>
 0
Author: jalalBK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-04 12:50:31

Bueno, lo anterior funciona, aquí está mi solución que requiere un poco menos de marcado y es más flexible.

.cells {
  display: inline-block;
  float: left;
  padding: 1px;
}
.cells>.content {
  background: #EEE;
  display: table-cell;
  float: left;
  padding: 3px;
  vertical-align: middle;
}
<div id="div1" class="cells"><div class="content">My Cell 1</div></div>
<div id="div2" class="cells"><div class="content">My Cell 2</div></div>
 0
Author: Gareth Clarke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-24 18:44:02

Haz un nuevo div con cualquier nombre (solo usaré table-split) y dale un ancho, sin agregarle contenido, mientras lo colocas entre los divs necesarios que necesitan ser separados.

Puede agregar cualquier ancho que encuentre necesario. Solo usé 0.6% porque es lo que necesitaba cuando tenía que hacer esto.

.table-split {
  display: table-cell;
  width: 0.6%
}
<div class="table-split"></div>
 -3
Author: Anon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-23 08:35:33