为什么是“显示:表格单元格”的股利,不受边际影响?
我有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>
原因
从MDN文档 :
[margin属性]适用于除table-caption,table和inline-table之外的表格显示types的元素之外的所有元素
换句话说, margin
属性不适用于display:table-cell
元素。
解
考虑使用border-spacing
属性。
请注意,它应该应用于具有display:table
layout和border-collapse:separate
parent的父元素。
例如:
HTML
<div class="table"> <div class="row"> <div class="cell">123</div> <div class="cell">456</div> <div class="cell">879</div> </div> </div>
CSS
.table {display:table;border-collapse:separate;border-spacing:5px;} .row {display:table-row;} .cell {display:table-cell;padding:5px;border:1px solid black;}
看到jsFiddle演示
不同的边界水平和垂直
正如DiegoQuirós所提到的, border-spacing
属性也接受两个值来为水平和垂直轴设置不同的边界。
例如
.table {/*...*/border-spacing:3px 5px;} /* 3px horizontally, 5px vertically */
您可以使用内部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>
JS小提琴
如果你有这样的div彼此相邻
<div id="1" style="float:left; margin-right:5px"> </div> <div id="2" style="float:left"> </div>
这应该工作!
如果您没有边框,则可以使用透明边框而不是边距:
div { display: table-cell; border: 5px solid transparent; }
注意:你不能在这里使用百分比… 🙁