我正在尝试使用nth-child为除第一行和最后一行之外的所有行设置边框间距,但由于某种原因它不起作用。我做错了什么?
table {
border: 1px solid black;
width: 98%;
margin: 0 auto;
border-collapse: separate;
border-spacing: 10px 50px;
}
td {
border: 1px solid black;
}
tr:nth-child(1) td:nth-child(1) {
border-spacing : 0px 0px;
}
tr:nth-child(1) td:nth-child(2) {
border-spacing : 0px 0px;
}
tr:nth-child(3) td:nth-child(1) {
border-spacing : 0px 0px;
}
tr:nth-child(3) td:nth-child(2) {
border-spacing : 0px 0px;
}
<table>
<tr><td> row1 col1 </td><td> row1 col2 </td></tr>
<tr><td> row2 col1 </td><td> row2 col2 </td></tr>
<tr><td> row3 col1 </td><td> row3 col2 </td></tr>
<tr><td> row4 col1 </td><td> row4 col2 </td></tr>
<tr><td> row5 col1 </td><td> row5 col2 </td></tr>
</table>
答案 0 :(得分:1)
检查下面的代码并且您可以将border-spacing
效果应用于表格而不是td or tr
,您只能直接使用td
填充,然后使用:first-child and :last-child
删除填充第一个和最后一个td or tr
。
table {
border: 1px solid black;
width: 98%;
margin: 0 auto;
border-collapse: separate;
border-spacing: 10px 50px;
}
td {
border: 1px solid black;
padding: 50px 10px;
}
tr:first-child td,tr:last-child td {
padding: 5px;
}
<table>
<tr><td> row1 col1 </td><td> row1 col2 </td></tr>
<tr><td> row2 col1 </td><td> row2 col2 </td></tr>
<tr><td> row3 col1 </td><td> row3 col2 </td></tr>
<tr><td> row4 col1 </td><td> row4 col2 </td></tr>
<tr><td> row5 col1 </td><td> row5 col2 </td></tr>
</table>
答案 1 :(得分:0)
如果我理解正确,那么border-spacing
不是你所追求的,但效果应该可以用填充来实现。像下面这样的东西可以给你一种你似乎想要的可变间距:
td {
padding: 50px 10px;
}
tr:first-child td,
tr:last-child td {
padding: 0;
}
由于您说要定位第一行和最后一行,:first-child
和:last-child
比:nth-child
更适合任务,这对于更复杂的选择更为合适模式(例如,每三个孩子等)。
我怀疑为了清晰起见添加了边框,但是如果你需要它们,你可以做一些事情,比如将div
包裹起来=每个td
的内容有填充并给出1px边框td div
(选择div
中的任何td
。
但是如果填充物在间距方面达到了你想要的位置,那么其余部分就可以很容易地被砍掉。