J'ai ici deux divs:
<div style="display:table-cell" id="div1">
content
</div>
<div style="display:table-cell" id="div2">
content
</div>
Est-il possible de créer un espace entre ces deux divs (qui ont display:table-cell
)?
Vous pouvez utiliser la propriété border-spacing
:
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;
}
_
Une autre option?
Bien , pas vraiment.
Pourquoi?
margin
property n'est pas applicable à _display: table-cell
_ éléments.padding
ne crée pas d'espace entre les bords des cellules.float
détruit le comportement attendu des éléments _table-cell
_ pouvant être aussi grands que leur élément parent.Utilisez des bordures transparentes si possible.
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;
}
Vous pouvez utiliser la propriété border-spacing
, mais elle génère non seulement un espace entre les cellules du tableau, mais également entre les cellules du tableau et le conteneur du tableau.
Si vous n'avez pas besoin de bordures visibles sur vos cellules de tableau, vous devez donc utiliser transparent
border pour générer des marges de cellule. Les bordures transparentes nécessitent le réglage de background-clip: padding-box;
car, sinon, la couleur d'arrière-plan des cellules du tableau est affichée sur la bordure.
Les bordures transparentes et les images d'arrière-plan sont prises en charge à partir de IE9 (et de tous les autres navigateurs modernes). Si vous avez besoin de la compatibilité IE8 ou n'avez pas besoin d'espace transparent, vous pouvez simplement définir une couleur de bordure blanche et laisser le background-clip
dehors.
<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>
Eh bien, ce qui précède fonctionne, voici ma solution qui nécessite un peu moins de balisage et est plus 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>