我的桌子上有以下CSS:
table{
border: 1px solid black;
border-collapse: collapse;
}
tr{
border-bottom: 1px solid #a2a2a2;
}
我希望我的桌子有一个黑色边框,在内部,该线应该用灰色边框分隔。但是,表格的底部边框被tr覆盖,并且是灰色而不是黑色。
如何设置将表边框的优先级设置为tr边框?
答案 0 :(得分:7)
将您的下边框移至tr
的顶部,并将第一个tr
设置为无边框:
table{
border: 1px solid black;
border-collapse: collapse;
}
tr{
border-top: 1px solid #a2a2a2;
}
tr:first-child{
border:none;
}
jsFiddle to demonstrate it working(略微修改边框颜色和尺寸以帮助它们在演示中更好地显示)
请注意,此解决方案涉及的CSS代码比其他有效解决方案略多,但具有更好的浏览器兼容性的优势。 (:first-child
是CSS2,而:last-child
是CSS3)
<强> [编辑] 强>
根据OP的评论如下:为防止单元格边框流入表格边框,我们需要执行以下操作:
删除border-collapse:collapse
。这就是使边界结合在一起导致出血效果的原因。
将内边框放在单元格(td
)而不是行(tr
)上。这是必要的,因为如果没有border-collapse
,我们就无法在tr
上设置边框。
将border-spacing:0
添加到表格中。这会缩小td
元素之间的差距,这些元素现在会显示,因为边框位于它们上而不是tr
。
这是完成的代码:
table{
border: 4px solid blue;
border-spacing:0;
}
td{
border-top: 4px solid red;
}
tr:first-child>td{
border:none;
}
这是小提琴的更新版本:http://jsfiddle.net/T5TGN/2/
答案 1 :(得分:4)
使用:not(:last-child)
table{
border: 1px solid black;
border-collapse: collapse;
}
tr:not(:last-child){
border-bottom: 1px solid #a2a2a2;
}
答案 2 :(得分:1)
答案 3 :(得分:0)
尝试将填充底部添加到tr:
tr{
border-bottom: 1px solid #a2a2a2;
padding-bottom: 1px;
}