ここには2つのdivがあります:
<div style="display:table-cell" id="div1">
content
</div>
<div style="display:table-cell" id="div2">
content
</div>
これら2つのdiv(display:table-cell
がある)の間にスペースを作る方法はありますか?
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;
}
他のオプションはありますか?
まあ、そうでもない。
なぜ?
margin
プロパティ 該当なし to display: table-cell
要素。padding
プロパティは、セルの端の間にスペースを作成しません。float
プロパティは、親要素と同じ高さにできるtable-cell
要素の予期される動作を破壊します。可能であれば、透明な境界線を使用します。
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;
}
border-spacing
プロパティを使用できますが、テーブルセル間だけでなく、テーブルセルとテーブルコンテナ間にもスペースを生成します。
テーブルのセルに表示される境界線が必要ない場合は、transparent
bordersを使用してセルのマージンを生成する必要があります。透明な境界線では、テーブルセルの背景色が境界線に表示されるため、background-clip: padding-box;
を設定する必要があります。
IE9では、透明な境界線と背景クリップがサポートされています(その他のすべての最新ブラウザー)。 IE8との互換性が必要な場合、または実際の透明なスペースが必要ない場合は、白い境界線の色を設定し、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>
さて、上記は機能しますが、ここでは少し少ないマークアップを必要とし、より柔軟な私のソリューションです。
.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>