为什么div是"display:table-cell;" 不受保证金影响?

use*_*946 206 html css

我有div彼此相邻的元素display: table-cell;.

我想margin在它们之间设置,但margin: 5px没有效果.为什么?

我的代码:

<div style="display: table-cell; margin: 5px; background-color: red;">1</div>
<div style="display: table-cell; margin: 5px; background-color: green;">1</div>
Run Code Online (Sandbox Code Playgroud)

Boa*_*oaz 297

原因

MDN文档:

[margin属性]适用于除table-caption,table和inline-table之外的表显示类型的元素以外的所有元素

换句话说,该margin物业是适用display:table-cell的元素.

请考虑使用该border-spacing属性.

请注意,它应该应用于具有display:table布局和的父元素border-collapse:separate.

例如:

HTML

<div class="table">
    <div class="row">
        <div class="cell">123</div>
        <div class="cell">456</div>
        <div class="cell">879</div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.table {display:table;border-collapse:separate;border-spacing:5px;}
.row {display:table-row;}
.cell {display:table-cell;padding:5px;border:1px solid black;}
Run Code Online (Sandbox Code Playgroud)

请参阅jsFiddle演示


水平和垂直不同的边距

正如DiegoQuirós所提到的,该border-spacing属性还接受两个值来设置水平轴和垂直轴的不同边距.

例如

.table {/*...*/border-spacing:3px 5px;} /* 3px horizontally, 5px vertically */
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!如果水平和垂直空间需要不同的边界间距,也有这种表示法:水平垂直; (6认同)

urm*_*mur 21

您可以使用内部div来设置边距.

<div style="display: table-cell;">
   <div style="margin:5px;background-color: red;">1</div>
</div>
<div style="display: table-cell; ">
  <div style="margin:5px;background-color: green;">1</div>
</div>
Run Code Online (Sandbox Code Playgroud)

JS小提琴

  • 如果您想要单元格之间的边距而不是它们的左侧或右侧,这是一个好主意.然后你的CSS就像`.inner-div {margin-right:5px; } .outer-cell:last-child .inner-div {margin-right:0; }`.但也请注意这个问题:这个例子的红色和绿色背景不一定高,因为它们不在细胞上. (2认同)

Chr*_*ppy 7

如果没有边框,可以使用透明边框而不是边距:

div {
  display: table-cell;
  border: 5px solid transparent;
}
Run Code Online (Sandbox Code Playgroud)

注意:你不能在这里使用百分比...... :(