【发布时间】:2014-01-24 15:23:33
【问题描述】:
我有一个包含三列的外部表。每个单元格都包含一个内表。外表和内表都有边框。
我希望外部表格的左边框和第一个内部表格之间、每个内部表格和下一个表格之间、最后一个内部表格和外部表格的右边界之间的水平空间相等。
什么是干净的方法来做到这一点?我一直在尝试为每个外部表格行中的第一个、第二个和第三个单元格定义 CSS 规则,如下所示:
table.outer tr td:nth-of-type(1) {
text-align:center; vertical-align:top;
padding-left:3mm; padding-right:1.5mm;
}
table.outer tr td:nth-of-type(2) {
text-align:center; vertical-align:top;
padding-left:1.5mm; padding-right:1.5mm;
}
table.outer tr td:nth-of-type(3) {
text-align:center; vertical-align:top;
padding-left:1.5mm; padding-right:3mm;
}
这种方法会造成噩梦。首先,IE 8 不支持 nth-of-type 选择器。其次,在确实支持的浏览器中,内表的第一个、第二个和第三个单元格继承了外表的填充属性,当我尝试覆盖它们时,内表的水平间距变为完全不正常。我不知道出了什么问题,更不用说为什么了。最好找到另一种方法,而不是继续尝试使这种方法起作用!
【问题讨论】:
-
您可以为初学者添加类和样式。应该可以解决您的大部分问题。
-
我不确定我的理解是否正确。你不能把
border-spacing放在外面的主桌子上吗? jsfiddle.net/GQsH8 -
ERR144,不幸的是,您的答案只有在border-collapse=separate 时才有效。表格的其他部分依赖于border-collapse=collapse。
-
我刚刚重新访问了这个页面,发现该网站截断了我之前的消息。我将重新输入缺少的部分。 (1) Blake,很遗憾,我对 ERR144 的回复也适用于您的建议。 (2) Alien,这个页面会运行在一个让外部 JavaScript 包难以使用的环境中。我很欣赏你的建议,我想看看他们是怎么做到的,但现在不是时候。 (3) NewInTheBusiness,我完全不明白你的建议。当然,我正在使用样式类;我的原始帖子包括样式化它们的 CSS 规则。你有别的想法吗?请澄清。
标签: html css css-tables spacing cellspacing