Ich habe hier zwei Divs:
<div style="display:table-cell" id="div1">
content
</div>
<div style="display:table-cell" id="div2">
content
</div>
Gibt es eine Möglichkeit, Platz zwischen diesen beiden Divs zu schaffen display:table-cell
?
Ich habe hier zwei Divs:
<div style="display:table-cell" id="div1">
content
</div>
<div style="display:table-cell" id="div2">
content
</div>
Gibt es eine Möglichkeit, Platz zwischen diesen beiden Divs zu schaffen display:table-cell
?
Antworten:
Sie können border-spacing
Eigenschaft verwenden:
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;
}
Irgendeine andere Option?
Nun , nicht wirklich.
Warum?
margin
Eigentum ist nicht anwendbar auf display: table-cell
Elemente.padding
Die Eigenschaft schafft keinen Platz zwischen den Kanten der Zellen.float
Eigenschaft zerstört das erwartete Verhalten von table-cell
Elementen, die so groß sein können wie ihr übergeordnetes Element.position: relative
auf table-*-group
, table-row
, table-column
, table-cell
, und table-caption
Elemente sind nicht definiert.
border-right: 10px solid #FFF
. Dies funktionierte gut für mich beim Entwerfen eines CSS-Dropdown-Menüs, wenn ich etwas Platz zwischen den table-cell
Elementen haben wollte.
Verwenden Sie nach Möglichkeit transparente Ränder.
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;
}
Sie können die border-spacing
Eigenschaft verwenden, wie aus der akzeptierten Antwort hervorgeht. Dadurch wird jedoch nicht nur Platz zwischen den Tabellenzellen, sondern auch zwischen den Tabellenzellen und dem Tabellencontainer generiert. Dies kann unerwünscht sein.
Wenn Sie keine sichtbaren Ränder für Ihre Tabellenzellen benötigen, sollten Sie daher transparent
Ränder verwenden, um Zellränder zu generieren. Transparente Ränder müssen eingestellt werden, background-clip: padding-box;
da sonst die Hintergrundfarbe der Tabellenzellen am Rand angezeigt wird.
Transparente Ränder und Hintergrundclips werden ab IE9 (und allen anderen modernen Browsern) unterstützt. Wenn Sie IE8-Kompatibilität benötigen oder keinen transparenten Raum benötigen, können Sie einfach eine weiße Rahmenfarbe festlegen und diese weglassen background-clip
.
<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>
Nun, das oben genannte funktioniert, hier ist meine Lösung, die etwas weniger Markup erfordert und flexibler ist.
.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>
Erstellen Sie ein neues Div mit einem beliebigen Namen (ich verwende nur Tabellensplit) und geben Sie ihm eine Breite, ohne Inhalt hinzuzufügen, während Sie es zwischen den erforderlichen Divs platzieren, die getrennt werden müssen.
Sie können die gewünschte Breite hinzufügen. Ich habe nur 0,6% verwendet, weil es das ist, wofür ich es brauchte, als ich das tun musste.
.table-split {
display: table-cell;
width: 0.6%
}
<div class="table-split"></div>
position: relative
.