为什么cellspacing和cellpadding不是CSS样式

时间:2008-12-03 23:34:41

标签: html css html-table cellpadding cellspacing

我不知道为什么这对我这么烦恼,但是当我创建网站时,我总是尝试用CSS做我所有的造型。但是,当我使用表格时,我总是要记住要做的一件事是添加cellspacing =“0”和cellpadding =“0”

为什么没有CSS属性来覆盖这些过时的HTML 4属性?

6 个答案:

答案 0 :(得分:63)

Cellspacing

table { border-collapse: collapse; }

对于cellpadding,您可以

table tr td, table tr th { padding: 0; }

答案 1 :(得分:41)

垫子已经回答了,但仅仅是为了完整性:

  • paddingcellpadding
  • border-spacingcellspacing
  • border-collapse→没有HTML等效项

还值得记住的是,您可以为CSS设置单独的水平和垂直值,例如border-spacing: 0 1px

答案 2 :(得分:8)

Eric Myer的reset stylesheet包含以下表格的'重置'样式:

/* tables still need 'cellspacing="0"' in the markup */
table {
    border-collapse: collapse;
    border-spacing: 0;
}

此外,TD,TR被重置:

thead, tr, th, td {
    margin: 0;
    padding: 0;
    border: 0;
    outline: 0;
    font-size: 100%;
    vertical-align: baseline;
    background: transparent;
}

我提到这个的原因是他有一个评论'表仍然需要cellpadding = 0'。我认为他把这个放在这里是有原因的 - 可能需要一些旧的浏览器。从这一事实来看,这是他所包含的极少数评论之一,我猜它很重要,并且有充分的理由。

基于此评论 - 仅此评论! - 我继续在标记中使用cellspacing =“0”,除非有人告诉我(下面)为什么我不需要。然而,在任何现代浏览器中可能都没有必要支持这些日子。

答案 3 :(得分:1)

table { border-collapse:collapse; }

答案 4 :(得分:0)

我猜有人认为细胞间距是一种“不良做法”。我如何理解它等同于CSS2标准,但IE不支持此属性。 border-collapse允许将间距设置为0值。可以实现单元填充,将填充属性设置为表的TD元素。

答案 5 :(得分:0)

遗憾的是,单元格不能从行(tr)的CSS属性继承默认填充,否则不能从行组(thead / tbdy / tfoot)继承默认填充,如果不是“ initial”则是从colgroup继承,或整个桌子。

“ cellspacing”不存在此问题(但实际上,它们是单元格周围的边距,并且这些外部边距随着相邻单元格的边距以及填充表格/行组或行的内部填充而崩溃通过表格的“背景”设置(表格背景还包括表格的“边框”,该边框在表格的顶部绘制,并且还会将该背景裁剪到表格边框的外边缘,特别是当边框具有圆角时)。 / p>

但是对于cellpadding而言,将“ cell-padding:n”定义为表或组属性比在每个单元格上单独且显式地使用其自己的“ border:n”样式(应该仅是如果需要覆盖某些特定单元格中的填充,则使用此符号。)