【发布时间】:2010-10-12 07:32:23
【问题描述】:
编辑 - 原标题: 有没有其他方法可以在CSS 中实现border-collapse:collapse(以便获得折叠的圆角表)?
事实证明,简单地让表格的边框折叠并不能解决根本问题,我更新了标题以更好地反映讨论。
我正在尝试使用 CSS3 border-radius 属性制作圆角表格。我使用的表格样式如下所示:
table {
-moz-border-radius:10px;
-webkit-border-radius:10px;
border-radius:10px
}
这就是问题所在。我还想设置border-collapse:collapse 属性,当设置border-radius 时不再起作用。有没有一种基于 CSS 的方式我可以在不实际使用的情况下获得与 border-collapse:collapse 相同的效果?
编辑:
我制作了一个简单的页面来演示问题here(仅限 Firefox/Safari)。
似乎很大一部分问题在于将表格设置为圆角不会影响角td元素的角。如果表格都是一种颜色,这不会有问题,因为我可以分别为第一行和最后一行制作顶部和底部 td 角。但是,我为表格使用不同的背景颜色来区分标题和条带化,因此内部 td 元素也会显示它们的圆角。
建议解决方案总结:
用另一个圆角元素围绕表格不起作用,因为表格的方角“渗出”。
将边框宽度指定为 0 不会折叠表格。
将单元格间距设置为零后,底部td 角仍然是方形的。
改用 JavaScript - 可以避免问题。
可能的解决方案:
表格是用 PHP 生成的,所以我可以对每个外部 th/tds 应用不同的类并分别设置每个角的样式。我宁愿不这样做,因为它不是很优雅,而且应用于多个表有点痛苦,所以请不断提出建议。
可能的解决方案 2 是使用 JavaScript(特别是 jQuery)来设置角的样式。这个解决方案也有效,但仍然不是我想要的(我知道我很挑剔)。我有两个保留:
- 这是一个非常轻量级的网站,我希望将 JavaScript 保持在最低限度
- 对我来说,使用边界半径的部分吸引力在于优雅的降级和渐进式增强。通过对所有圆角使用边框半径,我希望在支持 CSS3 的浏览器中拥有始终如一的圆角网站和在其他浏览器中始终如一的方形网站(我在看着你,IE)。
我知道今天尝试用 CSS3 来做这件事似乎没有必要,但我有我的理由。我还想指出,这个问题是 w3c 规范的结果,而不是 CSS3 支持不佳,所以当 CSS3 得到更广泛的支持时,任何解决方案仍然是相关和有用的。
【问题讨论】:
-
你不能把表格包裹在一个div中,在div上设置border-radius和“溢出:隐藏”吗?我刚刚测试过,效果很好,除非您需要在具有固定宽度/高度的 div 或其父级中滚动/展开。
-
我认为最后的 CSS 语句缺少分号。
-
这个问题是在 2009 年提出的。我有点惊讶的是,在 2015 年没有比下面列出的更好的解决方案。 W3C 应该在几年前就解决了这个问题。
-
我认为提供的示例链接不再合适...
标签: html css rounded-corners html-table