CSS – 仅在表格内边框

我想弄清楚如何在表内添加边框。 当我做:

table { border: 0; } table td, table th { border: 1px solid black; } 

边界在整个桌子周围,也在桌子单元之间。 我想要实现的是在表格周围的表格周围只有边框(在表格周围没有外边框)。

这里是我用于表格的标记(尽pipe我认为这不重要):

 <table> <tr> <th>Heading 1</th> <th>Heading 2</th> </tr> <tr> <td>Cell (1,1)</td> <td>Cell (1,2)</td> </tr> <tr> <td>Cell (2,1)</td> <td>Cell (2,2)</td> </tr> <tr> <td>Cell (3,1)</td> <td>Cell (3,2)</td> </tr> </table> 

以下是我适用于大部分表格的一些基本样式:

 table { border-collapse: collapse; border-spacing: 0; } 

如果你正在做我认为你正在做的事情,你会需要更多的东西,像这样:

 table { border-collapse: collapse; } table td, table th { border: 1px solid black; } table tr:first-child th { border-top: 0; } table tr:last-child td { border-bottom: 0; } table tr td:first-child, table tr th:first-child { border-left: 0; } table tr td:last-child, table tr th:last-child { border-right: 0; } 

jsFiddle演示

问题是你正在所有的单元格周围设置一个“全边框”,这使得它看起来好像在整个表格的边框上。

干杯。

编辑:有关这些伪类的更多信息可以在quirksmode上find,而且,正如预期的那样,在IE支持方面,你几乎是SOL。

这对我有用:

 table { border-collapse: collapse; border-style: hidden; } table td, table th { border: 1px solid black; } 

查看示例…

在FF 3.6和Chromium 5.0中testing,IE缺乏支持; 来自W3C :

具有“隐藏”边界风格的边界优先于所有其他相互冲突的边界。 任何具有此值的边框都会压缩此位置的所有边框。

一个非常简单的方法来达到预期效果的例子:

 <table border="1" frame="void" rules="all"> <tr> <td>1111</td> <td>2222</td> <td>3333</td> </tr> <tr> <td>4444</td> <td>5555</td> <td>6666</td> </tr> </table> 

由于与ie7兼容,即ie8我build议使用第一个孩子,而不是最后一个孩子来做到这一点:

 table tr td{border-top:1px solid #ffffff;border-left:1px solid #ffffff;} table tr td:first-child{border-left:0;} table tr:first-child td{border-top:0;} 

你可以在http://msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx上学习CSS 2.1伪类

对于普通表格标记,下面是一个简短的解决scheme,适用于BrowserStack上的所有设备/浏览器,IE 7及以下版本除外:

 table { border-collapse: collapse; } td + td, th + th { border-left: 1px solid; } tr + tr { border-top: 1px solid; } 

对于IE 7的支持,添加这个:

 tr + tr > td, tr + tr > th { border-top: 1px solid; } 

testing案例可以在这里看到: http : //codepen.io/dalgard/pen/wmcdE

这应该工作:

 table { border:0; } table td, table th { border: 1px solid black; border-collapse: collapse; } 

编辑:

我只是试了一下,没有桌边。 但是如果我设置了一个表格边框,它会被边框消除。

这是testing文件:

 <html> <head> <style type="text/css"> table { border-collapse: collapse; border-spacing: 0; } table { border: 0; } table td, table th { border: 1px solid black; } </style> </head> <body> <table> <tr> <th>Heading 1</th> <th>Heading 2</th> </tr> <tr> <td>Cell (1,1)</td> <td>Cell (1,2)</td> </tr> <tr> <td>Cell (2,1)</td> <td>Cell (2,2)</td> </tr> <tr> <td>Cell (3,1)</td> <td>Cell (3,2)</td> </tr> </table> </body> </html> 

这将做到这一切没有CSS <TABLE BORDER=1 RULES=ALL FRAME=VOID>

代码来自: HTML代码教程

添加边框到每个单元格中:

 table > tbody > tr > td { border: 1px solid rgba(255, 255, 255, 0.1); } 

删除第一行中所有单元格的顶部边框:

 table > tbody > tr:first-child > td { border-top: 0; } 

从第一列的单元格中删除左边框:

 table > tbody > tr > td:first-child { border-left: 0; } 

从最后一列中的单元格删除右边框:

 table > tbody > tr > td:last-child { border-right: 0; } 

删除最后一行中的单元格的底部边框:

 table > tbody > tr:last-child > td { border-bottom: 0; } 

http://jsfiddle.net/hzru0ytx/