我有一个包含许多行的表。其中一些行是class="highlight",表示需要采用不同样式并突出显示的行。我要做的是在这些行之前和之后添加一些额外的行距,这样它们就看起来与其他行略有分离。
我想我可以用margin-top:10px;margin-bottom:10px;但这并不奏效。有没有人知道怎么做,或者能不能做到?这里是HTML,我已经在tbody中设置了第二个tr来突出显示类。
<table>
<thead>
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Value1</td>
<td>Value2</td>
</tr>
<tr class="highlight">
<td>Value1</td>
<td>Value2</td>
</tr>
<tr>
<td>Value1</td>
<td>Value2</td>
</tr>
<tr>
<td>Value1</td>
<td>Value2</td>
</tr>
</tbody>
</table>
因为在tr上margin被忽略,我通常使用一个变通方法,通过设置一个透明的border-bottom或border-top,并将background-clip属性设置为padding-box,这样背景颜色就不会在边界下面被绘制。
table {
border-collapse: collapse; /* [1] */
}
th, td {
border-bottom: 5px solid transparent; /* [2] */
background-color: gold; /* [3] */
background-clip: padding-box; /* [4] */
}
确保单元格共享公共边界,但这是完全可选的。没有它也能解决问题。
5px的值代表你想要达到的边距
设置行/单元格的背景色
确保背景没有画在边框下面
请在这里查看演示:http://codepen.io/meodai/pen/MJMVNR?editors=1100
所有现代浏览器都支持背景剪辑。(和IE9 +)
或者你也可以使用border-spacing。但在边界崩溃即将崩溃的情况下,这是行不通的。
首先,不要尝试给<tr>或<td>设置边距,因为这在现代渲染中行不通。
解决方案1
虽然边距无效,但填充有效:
td{
padding-bottom: 10px;
padding-top: 10px;
}
警告:这也会使边界远离元素,如果你的边界是可见的,你可能想要使用解决方案2。
解决方案2
为了保持边界接近元素并模拟边缘,在每个reel表的<tr>之间放置另一个<tr>,如下所示:
<tr style="height: 20px;"> <!-- Mimic the margin -->
</tr>
您可以通过添加一个空行的单元格来创建表行之间的空间,就像这样…
<tr><td></td><td></td></tr>
CSS可以用来定位空的单元格,就像这样…
table :empty{border:none; height:10px;}
注意:只有当你的正常细胞都没有空的时候,这个方法才有用。
即使是一个不间断的空格也可以避免单元格被上面的CSS规则锁定。
不用说,你可以调整空间的高度,以任何你喜欢的高度属性包括。