为什么 border-spacing 没有在我的 TABLE 元素周围添加填充?
Why isn't border-spacing adding padding around my TABLE element?
我想在 TABLE 元素的上方和下方添加一些填充。我读过 border-spacing 可以用于此。所以我有我的 table
<table id="ranks">
<tbody><tr class="ranksHeaderRow">
<th></th>
<th>Name</th>
<th>Score</th>
<th>Votes Cast</th>
</tr>
<tr class="ranksDataRow even" data-id="25">
<td>1</td>
<td><a class="rankPersonLink" href="/votes/25">NameN</a></td>
<td>12.0</td>
<td>1</td>
</tr>
...
</table>
然后就有了这个风格
#ranks {
margin: 0 auto;
width: 60%;
border-collapse: collapse;
border-spacing: 20px 20px 20px 20px;
}
但是 TABLE -- https://jsfiddle.net/00tjhxaw/ 周围没有填充。如何让我的填充出现在我的 TABLE 元素周围?我添加了周围的 DIV 这样我就可以显示背景颜色,但是我不想尽可能地改变周围的 DIV。
PS - 为了让这个变得更加复杂,我喜欢单元格之间没有间距的事实,我想保留它。
border-collapse
将阻止 padding
应用于您的 table 元素。我认为您可以使用 border-spacing: 0;
并删除 border-collapse
.
我假设您将 table 包裹在带有背景色的 DIV 中,因为您想要在页面上创建一条色带,而不是简单地添加背景色table一个人。
在 table 之前和之后添加 space 的方法有几种选择。
1。在 table.
上使用 padding
div {
background-color: orange;
}
table {
margin: 0 auto;
padding: 3rem 0;
border-spacing: 0;
}
<div>
<table>
<tr>
<th>Alpha</th>
<th>Bravo</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</table>
</div>
2。在 table.
上使用 margin
记住,您必须使用 clearfix 来确保边距不会超出包装纸 DIV。
div {
background-color: orange;
overflow: hidden; /* my clearfix */
}
table {
margin: 3rem auto;
border-spacing: 0;
}
<div>
<table>
<tr>
<th>Alpha</th>
<th>Bravo</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</table>
</div>
3。在包装器 DIV.
上使用 padding
div {
padding: 3rem 0;
background-color: orange;
}
table {
margin: 0 auto;
border-spacing: 0;
}
<div>
<table>
<tr>
<th>Alpha</th>
<th>Bravo</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</table>
</div>
我想在 TABLE 元素的上方和下方添加一些填充。我读过 border-spacing 可以用于此。所以我有我的 table
<table id="ranks">
<tbody><tr class="ranksHeaderRow">
<th></th>
<th>Name</th>
<th>Score</th>
<th>Votes Cast</th>
</tr>
<tr class="ranksDataRow even" data-id="25">
<td>1</td>
<td><a class="rankPersonLink" href="/votes/25">NameN</a></td>
<td>12.0</td>
<td>1</td>
</tr>
...
</table>
然后就有了这个风格
#ranks {
margin: 0 auto;
width: 60%;
border-collapse: collapse;
border-spacing: 20px 20px 20px 20px;
}
但是 TABLE -- https://jsfiddle.net/00tjhxaw/ 周围没有填充。如何让我的填充出现在我的 TABLE 元素周围?我添加了周围的 DIV 这样我就可以显示背景颜色,但是我不想尽可能地改变周围的 DIV。
PS - 为了让这个变得更加复杂,我喜欢单元格之间没有间距的事实,我想保留它。
border-collapse
将阻止 padding
应用于您的 table 元素。我认为您可以使用 border-spacing: 0;
并删除 border-collapse
.
我假设您将 table 包裹在带有背景色的 DIV 中,因为您想要在页面上创建一条色带,而不是简单地添加背景色table一个人。
在 table 之前和之后添加 space 的方法有几种选择。
1。在 table.
上使用padding
div {
background-color: orange;
}
table {
margin: 0 auto;
padding: 3rem 0;
border-spacing: 0;
}
<div>
<table>
<tr>
<th>Alpha</th>
<th>Bravo</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</table>
</div>
2。在 table.
上使用margin
记住,您必须使用 clearfix 来确保边距不会超出包装纸 DIV。
div {
background-color: orange;
overflow: hidden; /* my clearfix */
}
table {
margin: 3rem auto;
border-spacing: 0;
}
<div>
<table>
<tr>
<th>Alpha</th>
<th>Bravo</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</table>
</div>
3。在包装器 DIV.
上使用padding
div {
padding: 3rem 0;
background-color: orange;
}
table {
margin: 0 auto;
border-spacing: 0;
}
<div>
<table>
<tr>
<th>Alpha</th>
<th>Bravo</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</table>
</div>