我试图使用CSS border-radius属性制作一个圆角表。我使用的表格样式是这样的:

table {
    -moz-border-radius:10px;
    -webkit-border-radius:10px;
    border-radius:10px
}

问题来了。我还想设置border-collapse:collapse属性,当设置border-radius时,它不再起作用。是否有一种基于css的方式,我可以得到相同的效果边界崩溃:崩溃而不实际使用它?

似乎很大一部分问题是,将表格设置为圆角并不影响角td元素的角。如果表格都是一种颜色,这就不是问题,因为我可以让顶部和底部td角分别为第一行和最后一行圆角。但是,我使用了不同的背景色来区分标题和条纹,所以内部td元素也会显示它们的圆角。

用另一个圆角元素包围桌子是行不通的,因为桌子的方角“渗透进来”。

将边框宽度指定为0不会折叠表格。

在将cellspacing设置为零后,底部td角仍然是正方形。

这些表是用PHP生成的,所以我可以对每个外部th/tds应用不同的类,并分别设置每个角的样式。我宁愿不这样做,因为它不是很优雅,而且应用于多个表有点痛苦,所以请继续提出建议。

我希望不使用JavaScript。


当前回答

使用"overflow: hidden"和"border-radius" 这也适用于“折叠”表

例子:

border - radius: 1 em; 溢出:隐藏;

其他回答

您可能需要在表格周围放置另一个元素,并将其样式设置为圆形边框。

工作草案规定,当border-collapse的值为collapse时,border-radius不适用于表元素。

下面的方法(在Chrome中测试)通过使用一个扩展为1px的盒子阴影而不是“真实”边界。

table { border-collapse: collapse; border-radius: 30px; border-style: hidden; /* hide standard table (collapsed) border */ box-shadow: 0 0 0 1px #666; /* this draws the table border */ } td { border: 1px solid #ccc; } <table> <thead> <tr> <th>Foo</th> <th>Bar</th> </tr> </thead> <tbody> <tr> <td>Baz</td> <td>Qux</td> </tr> <tr> <td>Life is short</td> <td rowspan="3">and</td> </tr> <tr> <td>Love</td> </tr> <tr> <td>is always over</td> </tr> <tr> <td>In the</td> <td>Morning</td> </tr> </tbody> </table>

在遇到同样的问题后找到了这个答案,但发现它非常简单:只需给表overflow:hidden

不需要包装元素。当然,我不知道7年前这个问题最初被问到的时候,这是否有用,但现在有用了。

简单的方法…

table {
 border-collapse: inherit;
 border: 1px solid black;
 border-radius: 5px;
}

这里有一个方法:

div { 边框:2px纯红色; 溢出:隐藏; border - radius: 14 px; 变换:旋转(0度); } 表{ border-spacing: 0; 背景颜色:蓝色; 高度:100%; 宽度:100%; } < div > <表> < tr > < td > < br > < / td > < / tr > 表> < / < / div >

Or

    div {
      ...
      overflow: hidden;
      border-radius: 14px;
      position: relative;
      z-index: 1;
    }