在CSS中设置单元格填充和单元格间距?

Set cellpadding and cellspacing in CSS?

提问人:kokos 提问时间:12/4/2008 最后编辑:lat94kokos 更新时间:2/28/2021 访问量:2707398

问:

在 HTML 表中,可以按如下方式设置 and:cellpaddingcellspacing

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

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

CSS 、HTML-TABLE 对齐方式

评论

11赞 PJ Brunet 9/1/2016
只是一个一般建议,在尝试这些解决方案之前,检查您的 style.css 是否对您的表进行了“重置”。示例:如果未将表设置为 ,则可能无法按预期工作。width:autoborder-collapse
3赞 Anubhav 5/23/2017
在表格上使用边框间距,在 td 上使用填充。
6赞 Robert J. Walker 8/14/2021
“噢,的,在过去,我和我一起做这件事......CSS又是什么?“——我,几乎每次我需要这样做时。cellpaddingcellspacing

答:

55赞 mat 12/4/2008 #1

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

124赞 Will Prescott 12/4/2008 #2

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

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

评论

51赞 John K 7/9/2010
在当今时代,这种现实已经到了第N级的程度。
8赞 Eric Nguyen 7/9/2010
这几乎是正确的,但只有在表尚未定义属性的情况下,才适用于 IE 5-7。我写了一个全面的答案,合并了此页面上其他答案的所有正确部分,以防万一。border-collapsecellspacing
370赞 Pup 8/24/2009 #3
table
{
    border-collapse: collapse; /* 'cellspacing' equivalent */
}

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

评论

23赞 TRiG 7/25/2012
这是等价的。等价物 for 是完全不同的。请参阅已接受的答案。cellspacing=0cellspacing=1
21赞 corrector 2/26/2010 #4

TBH。对于所有对 CSS 的狂热,您不妨直接使用它们,因为它们没有被弃用......cellpadding="0"cellspacing="0"

其他任何建议在 上留有利润的人显然都没有尝试过。<td>

评论

37赞 Kzqai 11/16/2011
它们实际上在 html5 中被弃用了。
3878赞 Eric Nguyen 7/9/2010 #5

基本

为了控制CSS中的“单元格填充”,你可以简单地在表格单元格上使用。例如,对于 10px 的“cellpadding”:padding

td { 
    padding: 10px;
}

对于“cellspacing”,您可以将 CSS 属性应用于您的表。例如,对于 10px 的“单元格间距”:border-spacing

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

此属性甚至允许单独的水平和垂直间距,这是老式“单元格间距”无法做到的。

IE ≤ 7 中的问题

这几乎适用于所有流行的浏览器,除了 Internet Explorer 到 Internet Explorer 7,您几乎不走运。我说“几乎”是因为这些浏览器仍然支持该属性,该属性合并了相邻表格单元格的边框。如果您尝试消除单元格间距(即 ),则应该具有相同的效果:表格单元格之间没有空格。但是,这种支持是错误的,因为它不会覆盖 table 元素上的现有 HTML 属性。border-collapsecellspacing="0"border-collapse:collapsecellspacing

简而言之:对于非 Internet Explorer 5-7 浏览器,处理您。对于 Internet Explorer,如果您的情况恰到好处(您想要 0 个单元格间距,并且您的表尚未定义它),则可以使用 .border-spacingborder-collapse:collapse

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

注意:有关可以应用于表格和浏览器的 CSS 属性的概述,请参阅这个精彩的 Quirksmode 页面

评论

34赞 whitneyland 8/25/2011
cellpadding=“0” 在 Chrome 13.0.782.215 中仍然会产生影响,即使对表格应用了 border-collapse:collapse 和 border-spacing。
7赞 Martin Ørding-Thomsen 11/29/2011
@LeeWhitney,您需要在表格单元格上设置 padding: 0。
11赞 Ignas2526 11/23/2013
这有点偏离主题,但是 HTML5 中删除了 cellpadding 和 cellspacing 属性,所以 CSS 是现在唯一的方法。
16赞 Eric Nguyen 12/16/2013
大家好。为了清楚起见,我更新了答案,包括一个关于单元格填充的部分,我认为这是显而易见的(只需使用“填充”)。希望它现在更有用。
5赞 Eric Nguyen 4/2/2015
诚然,@vapcguy,在您可能设置表样式的任何无限可变的其他情况下,您将需要定义更具体的选择器。以上标记为示例。
74赞 Malvineous 8/20/2011 #6

对于那些想要非零单元格间距值的人,以下 CSS 对我有用,但我只能在 Firefox 中测试它。

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

table {
    border-collapse: separate;
    border-spacing: 2px;
}
111赞 Vitalii Fedorenko 12/5/2011 #7

此 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')返回 ,但两个语句都会运行,因为在 JavaScript 中,您可以传递比预期更多的参数,并且所有这些参数都将被计算。'separate'

57赞 George Filippakos 12/9/2011 #8

这个问题的简单解决方案是:

table
{
    border: 1px solid #000000;
    border-collapse: collapse;
    border-spacing: 0px;
}
table td
{
    padding: 8px 8px;
}
1025赞 user669677 6/12/2012 #9

违约

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

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

         Enter image description here

细胞填充

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

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

        Enter image description here

细胞间距

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

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

        Enter image description here

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

        Enter image description here

两者(特殊)

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

        Enter image description here

注意:如果设置了,则表示表的属性为 。border-spacingborder-collapseseparate

自己试试吧!

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

评论

1赞 Kaz 11/19/2013
桌子周围的间距是如何消失的?当我设置“border-spacing: 8px 12px”时,它不仅增加了表格边框之间的间距,而且增加了表格边框和外部单元格之间的间距!但这里的图片中没有描绘;它们向左齐平。
1赞 Kaz 11/20/2013
@2astalavista不幸的是,如果有人想要删除外部间距的效果,那么对于这些 CSS 属性来说,它就不能以这种方式工作。
0赞 11/20/2013
@Kaz您可能需要使用负边距来隐藏烦人的部分。
2赞 Jan M 11/5/2014
TD 上的默认填充通常为 1px,而不是 0
0赞 Adam Chalcraft 10/31/2020
请注意:例如,.border-spacing:horizontal vertical;padding:vertical horizontal;
47赞 Robert White 6/19/2012 #10

用 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 测试过这一点,因为这是我们在工作中可以使用的全部内容。

17赞 RolanDecoy 7/2/2012 #11

根据我对 W3C 分类的理解,s 用于“仅”显示数据。<table>

基于此,我发现创建一个带有背景和所有这些的表格,并使用和...<div>position: absolute;background: transparent;

它适用于 Chrome、Internet Explorer(6 及更高版本)和 Mozilla Firefox(2 及更高版本)。

边距用于(或无论如何都意味着)在容器元素之间创建间隔符,例如 、 和 、 而不是 、 或 。将它用于容器元素以外的任何内容将使您忙于调整网站以适应未来的浏览器更新。<table><div><form><tr><td><span><input>

10赞 Håkan Nilsson 2/14/2013 #12

我在边界崩溃后使用过,比如!important

border-collapse: collapse !important;

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

评论

10赞 Jukka K. Korpela 5/30/2013
!important只需要在复杂的情况下覆盖其他 CSS 设置(即使那样也大多是错误的方法)。
12赞 Falguni Panchal 6/14/2013 #13

试试这个:

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

或者试试这个:

table {
    border-collapse: collapse;
}
table td, table th {
    padding: 10px;
}
15赞 Suraj Rawat 2/27/2014 #14

CSS:

selector{
    padding:0 0 10px 0; // Top left bottom right 
}
19赞 Suraj Rawat 3/16/2014 #15

只需将 CSS 填充规则与表数据一起使用:

td { 
    padding: 20px;
}

对于边框间距:

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

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

26赞 Elad Shechter 4/28/2014 #16

此样式用于表格的完全重置 - 单元格填充、单元格间距边框

我的重置.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 */
}
6赞 Majid Sadr 12/24/2014 #17
td {
    padding: npx; /* For cellpadding */
    margin: npx; /* For cellspacing */
    border-collapse: collapse; /* For showing borders in a better shape. */
}

如果没有工作,请尝试设置 to,然后 margin 将起作用。margindisplaytrblock

14赞 Rafiqul Islam 8/2/2017 #18

您可以使用 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>[email protected]</td>
      </tr>
      <tr>
        <td>2</td>
        <td>Peter</td>
        <td>Parker</td>
        <td>[email protected]</td>
      </tr>
      <tr>
        <td>3</td>
        <td>John</td>
        <td>Rambo</td>
        <td>[email protected]</td>
      </tr>
    </tbody>
  </table>

</body>
</html>

同样,您可以使用 CSS border-spacing 属性来应用相邻表格单元格边框之间的间距,就像 cellspacing 属性一样。但是,为了工作边框间距,border-collapse 属性 muse 的值是分开的,这是默认的。

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>[email protected]</td>
      </tr>
      <tr>
        <td>2</td>
        <td>Peter</td>
        <td>Parker</td>
        <td>[email protected]</td>
      </tr>
      <tr>
        <td>3</td>
        <td>John</td>
        <td>Rambo</td>
        <td>[email protected]</td>
      </tr>
    </tbody>
  </table>

</body>
</html>

9赞 MattAllegro 2/28/2021 #19

假设我们想以符合 HTML5 的方式为我们的表分配一个 10px 的“单元格填充”和一个 15px 的“单元格间距”。我将在这里展示两种方法,它们给出了非常相似的输出。

两组不同的 CSS 属性适用于表的同一 HTML 标记,但具有相反的概念:

  • 第一个使用 () 的默认值,用于提供单元格间距,border-collapseseparateborder-spacing

  • 第二个切换到该属性并将其用作单元格间距。border-collapsecollapseborder

在这两种情况下,单元填充都是通过分配给 s 来实现的,在这两种情况下,分配给它们的只是为了更清晰的演示。padding:10pxtdbackground-color

第一种方法:

table{border-spacing:15px}
td{background-color:#00eb55;padding:10px;border:0}
<table>
<tr>
<td>Header 1</td><td>Header 2</td>
</tr>
<tr>
<td>1</td><td>2</td>
</tr>
<tr>
<td>3</td><td>4</td>
</tr>
</table>

第二种方法:

table{border-collapse:collapse}
td{background-color:#00eb55;padding:10px;border:15px solid #fff}
<table>
<tr>
<td>Header 1</td><td>Header 2</td>
</tr>
<tr>
<td>1</td><td>2</td>
</tr>
<tr>
<td>3</td><td>4</td>
</tr>
</table>