在CSS中设置cellpadding和cellspacing吗?


3316

在HTML表格中,cellpaddingand cellspacing可以这样设置:

<table cellspacing="1" cellpadding="1">

使用CSS如何完成相同的工作?


6
只是一个一般性建议,在尝试这些解决方案之前,请检查您的style.css是否对表进行了“重置”。示例:如果您没有将表设置为,width:autoborder-collapse可能无法按预期工作。
PJ Brunet'9

1
在表格上使用边框间距,在td上使用填充。
阿努巴夫(Anubhav)

Answers:


3554

基本

要在CSS中控制“ cellpadding”,您只需padding在表格单元格上使用即可。例如10px的“ cellpadding”:

td { 
    padding: 10px;
}

对于“ cellspacing”,可以将border-spacingCSS属性应用于表。例如10px的“ cellspacing”:

table { 
    border-spacing: 10px;
    border-collapse: separate;
}

该属性甚至允许单独的水平和垂直间距,而老式的“单元间距”则无法做到这一点。

IE <= 7中的问题

除了通过Internet Explorer 7的Internet Explorer,几乎在所有流行的浏览器中都可以使用,您几乎不走运。我说“几乎”是因为这些浏览器仍支持该border-collapse属性,该属性合并了相邻表格单元的边界。如果你想消除CELLSPACING(也就是cellspacing="0"),那么border-collapse:collapse应该有同样的效果:表格单元格之间没有空格。但是,此支持存在很多问题,因为它不会覆盖cellspacingtable元素上的现有HTML属性。

简而言之:对于非Internet Explorer 5-7浏览器,border-spacing您一定会满意。对于Internet Explorer,如果您的情况恰到好处(您希望0个单元格间距并且表尚未定义),则可以使用border-collapse:collapse

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

注意:有关可应用于表以及哪些浏览器的CSS属性的概述,请参见此奇妙的Quirksmode页面


27
即使将border-collapse:collapse和border-spacing应用于表格,cellpadding =“ 0”在Chrome 13.0.782.215中仍然可以有所作为。
whitneyland 2011年

7
@LeeWhitney您需要在表格单元格上设置padding:0。
MartinØrding-Thomsen2011

7
这个话题有点离题,但是在HTML5中删除了cellpadding和cellspacing属性,因此CSS是唯一的选择。
Ignas2526

12
大家好。为了清楚起见,我已经更新了答案,其中包括有关cellpadding的部分,我认为这很明显(只需使用“ padding”即可)。希望它现在更有用。
埃里克·阮

4
的确,@ vapcguy,在您可能要对表进行样式设置的任何其他无限可变情况下,您将需要定义更具体的选择器。以上标记为示例。
埃里克·阮

942

默认

浏览器的默认行为等效于:

table {border-collapse: collapse;}
td    {padding: 0px;}

         在此处输入图片说明

细胞填充

设置单元格内容和单元格壁之间的空间量

table {border-collapse: collapse;}
td    {padding: 6px;}

        在此处输入图片说明

单元间距

控制表格单元格之间的空间

table {border-spacing: 2px;}
td    {padding: 0px;}

        在此处输入图片说明

table {border-spacing: 2px;}
td    {padding: 6px;}

        在此处输入图片说明

两者(特殊)

table {border-spacing: 8px 2px;}
td    {padding: 6px;}

        在此处输入图片说明

注意:如果已border-spacing设置,则表示border-collapse表的属性为separate

自己尝试!

在这里,您可以找到实现此目标的旧HTML方法。


1
桌子周围的间距如何消失?当我设置“边界间距:12px的8像素,但增加了间距不只是之间,但表格边框和细胞外之间但不是在这里描绘的图像,它们是左对齐!
卡兹

1
@ 2astalavista不幸的是,如果有人想要删除外部间距的效果,则无法对这些CSS属性使用这种方式。
卡兹(Kaz)

@Kaz您可能需要使用负边距来隐藏该烦人的部分。

2
TD上的默认填充通常为1px,而不是0
2014年

341
table
{
    border-collapse: collapse; /* 'cellspacing' equivalent */
}

table td, table th
{
    padding: 0; /* 'cellpadding' equivalent */
}

2
这实际上是我可以为我工作的唯一一件事,尽管我将信息应用于ID以避免过于笼统。
卡扎伊2011年

20
那是cellspacing=0等效的。的等效项cellspacing=1完全不同。请参阅已接受的答案。
TRiG 2012年

3
不应该table tdtable th只是tdth分别?无论哪种方式都可以工作,但是选择器越小,匹配的速度就越快
Cole Johnson

1
@Cole实际上,我认为应该是table > tr > tdand table > tr > th。这几乎trth和一样快,并且如果有嵌套表,则可以保证正常工作。Just my 2c
leviathanbadger 2013年

@ aboveyou00,但是table需要选择器吗?IIRC,<td>除非位于a中,否则a 是无效的<tr>
科尔·约翰逊

114

据我所知,在表格单元格上设置边距实际上并没有任何效果。真正的CSS等效项cellspacingborder-spacing-但在Internet Explorer中不起作用。

border-collapse: collapse如前所述,您可以用来将像元间隔可靠地设置为0,但是对于任何其他值,我认为唯一的跨浏览器方法是继续使用该cellspacing属性。


47
在当今时代,现实就是第N个层面。
约翰·K

7
这几乎是正确的,但border-collapse仅在IE 5-7中有效,前提是该表尚未cellspacing定义属性。我写了一个全面的答案,如果有帮助的话,可以合并此页面上其他答案的所有正确部分。
埃里克·阮

老实说,谁在乎Internet Explorer?使用它的任何人都应该知道损坏的网站是他们的错-使用如此低质量的浏览器。网站不必处理这个问题。让Internet Explorer迷路。忘记它的支持。我们不需要它,为此而苦恼。

99

此hack适用于Internet Explorer 6和更高版本,Google Chrome,Firefox和Opera

table {
    border-collapse: separate;
    border-spacing: 10px; /* cellspacing */
    *border-collapse: expression('separate', cellSpacing = '10px');
}

table td, table th {
    padding: 10px; /* cellpadding */
}

*声明适用于Internet Explorer 6和7,其他浏览器将正确忽略它。

expression('separate', cellSpacing = '10px')返回'separate',但是两个语句都运行,因为在JavaScript中,您可以传递比预期更多的参数,并且所有参数都将被求值。


对于那些试图响应电子邮件,请注意,*不受前景2007+认可(使用Word作为渲染引擎)campaignmonitor.com/css
ptim

71

对于那些想要非零cellpacing值的人,以下CSS对我有用,但我只能在Firefox中对其进行测试。

有关兼容性的详细信息,请参见其他地方发布Quirksmode链接。似乎它不适用于较旧的Internet Explorer版本。

table {
    border-collapse: separate;
    border-spacing: 2px;
}


49

另外,如果您愿意的话cellspacing="0",请不要忘记border-collapse: collapsetable样式表中添加。


43

用div包裹单元格的内容,您可以做任何想做的事,但是必须将每个单元格包裹在列中才能获得统一的效果。例如,要获得更大的左右边距:

因此CSS将

div.cellwidener {
  margin: 0px 15px 0px 15px;
}
td.tight {
  padding: 0px;
}
<table border="0">
  <tr>
    <td class="tight">
      <div class="cellwidener">My content</div>
    </td>
  </tr>
</table>

是的,这很麻烦。是的,它可以与Internet Explorer一起使用。实际上,我仅使用Internet Explorer进行了测试,因为这是我们允许在工作中使用的全部。


我希望我能投票更多...第一个示例,它没有重复其他示例,而另一个示例显示了如何将效果限制为单个表或单元格,而不是页面上的所有表!
vapcguy 2015年

23

border-collapse: collapse用于您的表,padding用于thtd


21

这种风格是完全复位表 - CELLPADDINGCELLSPACING边界

我的reset.css文件中有以下样式:

table{
    border:0;          /* Replace border */
    border-spacing: 0px; /* Replace cellspacing */
    border-collapse: collapse; /* Patch for Internet Explorer 6 and Internet Explorer 7 */
}
table td{
    padding: 0px; /* Replace cellpadding */
}

20

TBH。对于所有对CSS的幻想,您最好只使用cellpadding="0" cellspacing="0"它们,因为它们并不被弃用...

暗示在<td>的页边空白的其他任何人显然都没有尝试过。


35
它们实际上已在html5中弃用。
2011年


17

只需对表数据使用CSS填充规则:

td { 
    padding: 20px;
}

对于边框间距:

table { 
    border-spacing: 1px;
    border-collapse: collapse;
}

但是,由于box模型的diff实现,它可能会在旧版本的浏览器(如Internet Explorer)中产生问题。


15

从W3C分类中了解到,<table>s表示“仅”显示数据。

基于此,我发现<div>使用position: absolute;background: transparent;... 创建具有背景和所有内容的表要容易得多,并且使用和...

它可以在Chrome,Internet Explorer(6和更高版本)和Mozilla Firefox(2和更高版本)上运行。

页边距被使用(或反正意味着)来创建容器元素,例如之间的间隔件<table><div>并且<form>,不<tr><td><span><input>。将其用于除容器元素之外的任何其他内容,将使您忙于调整网站以供将来浏览器更新。


7
OP从来没有说过他用桌子做什么。
阿法拉沃


12

您可以使用CSS padding属性在表格单元格内轻松设置填充。这是产生与表的cellpadding属性相同效果的有效方法。

table,
th,
td {
  border: 1px solid #666;
}

table th,
table td {
  padding: 10px;
  /* Apply cell padding */
}
<!DOCTYPE html>
<html lang="en">
<head>

  <meta charset="utf-8">
  <title>Set Cellpadding in CSS</title>

</head>

<body>

  <table>
    <thead>
      <tr>
        <th>Row</th>
        <th>First Name</th>
        <th>Last Name</th>
        <th>Email</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>1</td>
        <td>Clark</td>
        <td>Kent</td>
        <td>clarkkent@mail.com</td>
      </tr>
      <tr>
        <td>2</td>
        <td>Peter</td>
        <td>Parker</td>
        <td>peterparker@mail.com</td>
      </tr>
      <tr>
        <td>3</td>
        <td>John</td>
        <td>Rambo</td>
        <td>johnrambo@mail.com</td>
      </tr>
    </tbody>
  </table>

</body>
</html>

同样,您可以使用CSS border-spacing属性在相邻的表格单元格边界之间应用间距,例如cellspacing属性。但是,为了使边框更有效,必须将border-collapse属性的值分开,这是默认设置。

table {
  border-collapse: separate;
  border-spacing: 10px;
  /* Apply cell spacing */
}

table,
th,
td {
  border: 1px solid #666;
}

table th,
table td {
  padding: 5px;
  /* Apply cell padding */
}
<!DOCTYPE html>
<html lang="en">
<head>

  <meta charset="utf-8">
  <title>Set Cellspacing in CSS</title>

</head>

<body>

  <table>
    <thead>
      <tr>
        <th>Row</th>
        <th>First Name</th>
        <th>Last Name</th>
        <th>Email</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>1</td>
        <td>Clark</td>
        <td>Kent</td>
        <td>clarkkent@mail.com</td>
      </tr>
      <tr>
        <td>2</td>
        <td>Peter</td>
        <td>Parker</td>
        <td>peterparker@mail.com</td>
      </tr>
      <tr>
        <td>3</td>
        <td>John</td>
        <td>Rambo</td>
        <td>johnrambo@mail.com</td>
      </tr>
    </tbody>
  </table>

</body>
</html>


10

尝试这个:

table {
    border-collapse: separate;
    border-spacing: 10px;
}
table td, table th {
    padding: 10px;
}

或尝试以下方法:

table {
    border-collapse: collapse;
}
table td, table th {
    padding: 10px;
}

9

!important在边界崩溃后使用

border-collapse: collapse !important;

它在IE7中对我有用。似乎覆盖了cellpacing属性。


9
!important仅在复杂情况下才需要覆盖其他CSS设置(甚至是错误的方法)。
Jukka K. Korpela

1
同样重复Dan的答案,只需添加!important,可以将其作为注释而不是其他答案。
vapcguy 2015年

8
<table>
    <tr>
        <th>Col 1</th>
        <th>Col 2</th>
        <th>Col 3</th>
    </tr>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
    </tr>
</table>

cell-padding可以padding在CSS中指定,而cell-spacing可以通过设置border-spacingtable 来设置。

table {
    border-spacing: 10px;
}
td {
    padding: 10px;
}

小提琴


6
td {
    padding: npx; /* For cellpadding */
    margin: npx; /* For cellspacing */
    border-collapse: collapse; /* For showing borders in a better shape. */
}

如果margin不起作用,请尝试设置displaytrto block,然后保证金将起作用。


5

对于表,HTML 5中的cellpacing和cellpadding已过时。

现在,对于单元间距,您必须使用边框间距。对于cellpadding,您必须使用border-collapse。

并确保您不在HTML5代码中使用此代码。始终尝试在CSS 3文件中使用这些值。



4

在HTML表格中,cellpaddingand cellspacing可以这样设置:

对于单元填充

只需调用简单td/th单元格即可padding

例:

table {
    border-collapse: collapse;
}

td {
  border: 1px solid red;
  padding: 10px;
}

用于细胞间隔

只是简单 table border-spacing

例:

/********* Cell-Spacing   ********/
table {
    border-spacing: 10px;
    border-collapse: separate;
}

td {
  border: 1px solid red;
}

CSS样式表提供了更多表格样式,CSS样式表提供了更多样式


3

您可以使用border-spacing和简单地在CSS中执行以下操作padding

table {
  border-collapse: collapse;
}

td, th {
  padding: 1em;
  border: 1px solid blue;
}
<table>
  <tr>
    <th>head_1</th>
    <th>head_2</th>
    <th>head_3</th>
    <th>head_4</th>
  </tr>
  <tr>
    <td>txt_1</td>
    <td>txt_2</td>
    <td>txt_3</td>
    <td>txt_4</td>
  </tr>
</table>


边框合拢时,忽略边框间距规则。
dgrogan

0

直接将样式添加到表本身如何?这不是table在CSS 中使用,如果页面上有多个表,这是一种BAD方法:

<table style="border-collapse: separate;border-spacing: 2px;">
    <tr>
        <td style="padding: 4px 4px;">Some Text</td>
    </tr>
</table>

2
在表格标签中放置“样式”比在CSS中放置“ table#someId”更糟糕,因为样式应与内容分开。但是问题的重点是如何将不推荐使用的html转换为适当的css。您已正确完成,但您并未真正在答案中添加任何内容,而是专注于一个无关的问题。
Teepeemm 2015年

1
什么都没加?!我添加的内容是专注于这里其他答案基本上说如何使用td { padding: ... }table { border-spacing: ... },而不是直接将其应用于表格。那些没有增加。就像我说的那样,当页面上有多个表并且不想影响它们时,就不要这样做了!我们不需要一整页的答案说“使用样式表!”,这也许是您最后想要的,因为您只想为一个单元格或表格设置格式。那是在将其应用于tabletd不受欢迎时,并且为其创建一个全新的类太过分了。
vapcguy

1
其他所有答案都使用样式表,因为原始问题是“我如何使用CSS做到这一点”。如果问题是“我如何让CSS仅影响一张桌子”,那么您的答案将更合适(尽管我仍然会赞成table#someId)。
Teepeemm 2015年

2
从技术上讲,内联样式仍然是CSS,只是不使用样式表,但是我明白了。
vapcguy 2015年

1
因为类背后的想法是可重用性。恕我直言,对于一次性而言,这没有什么意义,而且是过大的。
vapcguy 2015年

0

我建议这样做,并且特定表的所有单元格都会受到影响。

table.tbl_classname td, th {
    padding: 5px 5px 5px 4px   ;
 }


0

您可以检查以下代码,只需创建一个index.html并运行它。

<!DOCTYPE html>
<html>
   <head>
      <style>
         table{
         border-spacing:10px;
         }
         td{
         padding:10px;
         }
      </style>
   </head>
   <body>
      <table cellspacing="0" cellpadding="0">
         <th>Col 1</th>
         <th>Col 2</th>
         <th>Col 3</th>
         <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
         </tr>
      </table>
   </body>
</html>

输出:

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.