Set cellpadding and cellspacing in CSS?
在HTML表中,可以这样设置
1 | <table cellspacing="1" cellpadding="1"> |
如何使用CSS完成相同的工作?
- 只是一个一般性的建议,在尝试这些解决方案之前,请检查您的style.css是否在表上执行了"重置"。示例:如果没有将表设置为
width:auto ,那么border-collapse 可能无法按预期工作。 - 在表格上使用边框间距,在td上使用填充。
基础
为了控制CSS中的"cellpadding",只需在表格单元格上使用
1 2 3 | td { padding: 10px; } |
对于"cellspacing",可以将
1 2 3 4 | table { border-spacing: 10px; border-collapse: separate; } |
这个属性甚至允许单独的水平和垂直间距,这是您不能用旧的"cellspacing"来做的。
IE中的问题<=7
除了通过Internet Explorer 7向上浏览Internet Explorer外,这几乎适用于所有流行的浏览器,因为在那里您几乎不走运。我之所以说"几乎",是因为这些浏览器仍然支持合并相邻表单元格边界的
简而言之:对于非Internet Explorer 5-7浏览器,
1 2 3 4 | table { border-spacing: 0; border-collapse: collapse; } |
注意:有关可以应用于表和哪些浏览器的CSS属性的详细概述,请参见这个奇妙的QuirksMode页面。
- cellpadding="0"在chrome 13.0.782.215中仍然可以产生差异,即使border-collapse:collapse和border-spacing应用于表。
- 由于CSS的特殊性,这当然是有意义的,因此您可能需要将样式应用于CSS ID以获得最大的特殊性。不确定在所有情况下都会覆盖属性值,但它是开始检查的地方。
- @Leewitney您需要在表格单元格上设置padding:0。
- 这有点离题了,但是在HTML5中,cellpadding和cellspacing属性被删除了,所以CSS是现在唯一的方法。
- 嗨,大家好。为了清晰起见,我更新了答案,包括一节关于手机添加的内容,我认为这很明显(只需使用"padding")。希望它现在更有用。
- 这不是一个好答案。它说添加这个CSS,它将应用于页面上的所有表和单元格。如果一个页面上有多个表,并且每个表都需要不同的cellpadding或cellspacing,该怎么办?
- 是的,@vapcguy,在任何无限变量的其他情况下,您可能会在其中设计一个表,您需要定义更具体的选择器。以上为示例。
- 默认情况下填充不相同。例如,如果表格单元格具有背景色,则填充内容也将包括该背景。不完全是"单元格间距"。这就是它被称为"填充"的原因。当然,边缘应该对表格单元格起作用,但它不起作用,我不是破坏它的人。
- 注意,
border-collapse:collapse 不等同于cellspacing="0" 。前者在细胞间产生一条线,后者在细胞间产生两条线。
违约
浏览器的默认行为等效于:
1 2 | table {border-collapse: collapse;} td {padding: 0px;} |
&
细胞填充设置单元格内容与单元格壁之间的间距
1 2 | table {border-collapse: collapse;} td {padding: 6px;} |
&号
细胞间距控制表格单元格之间的间距
1 2 | table {border-spacing: 2px;} td {padding: 0px;} |
&号
两个1 2 | table {border-spacing: 2px;} td {padding: 6px;} |
&号
两个(特别)1 2 | table {border-spacing: 8px 2px;} td {padding: 6px;} |
&号
Note: If there is
border-spacing set, it indicatesborder-collapse property of the table isseparate .
你自己试试!
在这里,您可以找到实现这一点的旧HTML方法。
- 桌子周围的间距是如何消失的?当我设置"border spacing:8px 12px"时,它不仅增加了表边框和外部单元格之间的间距!但这并没有在图片中描述,它们是齐平的。
- @2astalavista,不幸的是,如果有人想要删除外部间距的效果,那么使用这些CSS属性就不会有这种效果。
- @卡兹,你可能需要用负边缘来隐藏那令人讨厌的部分。
- td上的默认填充通常是1px,而不是0
1 2 3 4 5 6 7 8 9 | table { border-collapse: collapse; /* 'cellspacing' equivalent */ } table td, table th { padding: 0; /* 'cellpadding' equivalent */ } |
- 这实际上是我唯一可以为自己工作的事情,尽管我将信息应用到一个ID,以避免过于笼统。
- 这是
cellspacing=0 的等价物。cellspacing=1 的等价物完全不同。请参阅已接受的答案。 - 难道
table td 和table th 不应该分别是td 和th 吗?这两种方法都可以,但较小的选择器意味着匹配速度稍快。 - @实际上,我认为应该是
table > tr > td 和table > tr > th 。这几乎和tr 和th 的速度一样快,而且如果您有一个嵌套表,它保证工作正常。只是我的2C - @在您00以上,但是否需要
table 选择器?IIRC,除非在
内,否则 无效。 - @是的,但是在一个表单元中可能有另一个嵌套的表。除非给单个表上的单元格指定一个特定的类,否则不能将规则仅应用于外部表。
据我所知,在表格单元格上设置页边距实际上没有任何效果。用于
cellspacing 的真正CSS等价物是border-spacing ,但它在Internet Explorer中不起作用。如前所述,可以使用
border-collapse: collapse 将单元格间距可靠地设置为0,但对于任何其他值,我认为唯一的跨浏览器方法是继续使用cellspacing 属性。- 在今天这个时代,现实是吸到第n度。
- 这几乎是正确的,但是如果表没有定义
cellspacing 属性,border-collapse 只在IE5-7中工作。我写了一个综合的答案,合并了本页其他答案的所有正确部分,以防有用。 - 老实说,谁在乎Internet Explorer?任何使用它的人都应该知道断开的网站是他们的错——使用如此低质量的浏览器。网站不应该处理这个问题。让Internet Explorer消失。忘记对它的支持。我们不需要它,这是一个痛苦的发展。
此黑客适用于Internet Explorer 6及更高版本、Google Chrome、Firefox和Opera:
1
2
3
4
5
6
7
8
9table {
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中,您可以传递比预期更多的参数,并且将对所有参数进行评估。- 对于那些尝试响应电子邮件的用户,请注意*不被Outlook 2007+识别(使用Word作为呈现引擎)campaignmonitor.com/css
对于那些想要非零的CellSpacing值的用户,下面的CSS对我很有用,但我只能在Firefox中测试它。
有关兼容性的详细信息,请参阅其他地方发布的quirksmode链接。它似乎不适用于旧的Internet Explorer版本。
1
2
3
4table {
border-collapse: separate;
border-spacing: 2px;
}这个问题的简单解决方案是:
1
2
3
4
5
6
7
8
9
10table
{
border: 1px solid #000000;
border-collapse: collapse;
border-spacing: 0px;
}
table td
{
padding: 8px 8px;
}另外,如果您想要
cellspacing="0" ,不要忘记在table 的样式表中添加border-collapse: collapse 。用DIV包装单元格的内容,您可以做任何您想做的事情,但您必须将每个单元格包装在一列中以获得统一的效果。例如,要扩大左右页边距:
那么CSS将是,
1
2
3
4
5
6div.cellwidener {
margin: 0px 15px 0px 15px;
}
td.tight {
padding: 0px;
}1
2
3
4
5
6
7<table border="0">
<tr>
<td class="tight">
My content
</td>
</tr>
</table>是的,这很麻烦。是的,它适用于Internet Explorer。事实上,我只在Internet Explorer中测试过这个,因为这是我们在工作中可以使用的全部功能。
- 我希望我能投更多的票…第一个没有重复其他的例子,还有一个演示如何将效果限制在单个表或单元格,而不是页面上的所有表或单元格!!!!
只需使用
border-collapse: collapse 作为桌子,padding 作为th 或td 。此样式用于表格的完全重置-单元格添加、单元格间距和边框。
我在reset.css文件中使用了这种样式:
1
2
3
4
5
6
7
8table{
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 */
}TBH。对于所有使用css的fannying,您最好使用
cellpadding="0" cellspacing="0" ,因为它们没有被否决…显然,其他任何人认为
的利润率没有这样做。 - 它们实际上在HTML5中被弃用。
1
2
3
4
5
6
7table th,td {
padding: 8px 2px;
}
table {
border-collapse: separate;
border-spacing: 2px;
}只需将CSS填充规则与表数据一起使用:
1
2
3td {
padding: 20px;
}对于边框间距:
1
2
3
4table {
border-spacing: 1px;
border-collapse: collapse;
}但是,由于Box模型的不同实现,它可能会在旧版本的浏览器(如Internet Explorer)中产生问题。
我从W3C分类中了解到,
s仅用于显示数据。
基于这一点,我发现创建一个具有背景和所有背景的
,并使用 position: absolute; 和background: transparent; 在其上浮动数据的表要容易得多。它适用于Chrome、Internet Explorer(6及更高版本)和Mozilla Firefox(2及更高版本)。
页边距用于(或以任何方式)在容器元素之间创建间隔符,如
、
和 、 、 或 。将其用于容器元素以外的任何其他元素都将使您忙于调整网站以备将来的浏览器更新。 - 奥普从来没有说过他用桌子做什么。
CSS:
1
2
3selector{
padding:0 0 10px 0; // Top left bottom right
}试试这个:
1
2
3
4
5
6
7table {
border-collapse: separate;
border-spacing: 10px;
}
table td, table th {
padding: 10px;
}或者试试这个:
1
2
3
4
5
6table {
border-collapse: collapse;
}
table td, table th {
padding: 10px;
}您可以使用css padding属性轻松地在表单元格内设置填充。这是产生与表的cellpadding属性相同效果的有效方法。
1
2
3
4
5
6
7
8
9
10
11table,
th,
td {
border: 1px solid #666;
}
table th,
table td {
padding: 10px;
/* Apply cell padding */
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
Set Cellpadding in CSS
</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属性。但是,为了工作边框间距,边框折叠属性的值必须是单独的,这是默认值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17table {
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 */
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
Set Cellspacing in CSS
</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>在边境崩溃后我用了
!important ,就像1border-collapse: collapse !important;在IE7中对我很有用。它似乎覆盖了cellspacing属性。
!important 只需要在复杂的情况下(甚至大多数情况下都是错误的方法)覆盖其他CSS设置。- 同样重复丹的回答,只是增加了
!important ,它可以作为评论而不是另一个答案。
1
2
3
4
5
6
7
8
9
10
11
12<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 可由css中的padding 给出,cell-spacing 可由table中的border-spacing 设置。1
2
3
4
5
6table {
border-spacing: 10px;
}
td {
padding: 10px;
}小提琴。
1
2
3
4
5td {
padding: npx; /* For cellpadding */
margin: npx; /* For cellspacing */
border-collapse: collapse; /* For showing borders in a better shape. */
}如果
margin 不起作用,试着把tr 的display 设为block ,保证金就会起作用。对于表格,在HTML5中cellspacing和cellpadding已经过时。
现在,对于单元格间距,必须使用边框间距。对于手机添加,你必须使用边界折叠。
确保你的HTML5代码中没有使用这个。始终尝试在CSS 3文件中使用这些值。
1
2
3
4
5
6
7
8table {
border-spacing: 4px;
color: #000;
background: #ccc;
}
td {
padding-left: 4px;
}在HTML表中,可以这样设置
cellpadding 和cellspacing :对于单元格填充:
只需调用简单的
td/th cellpadding 。例子:
1
2
3
4
5
6
7
8
9
10/******Call-Padding**********/
table {
border-collapse: collapse;
}
td {
border: 1px solid red;
padding: 10px;
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32<table>
<tr>
<th>Head1 </th>
<th>Head2 </th>
<th>Head3 </th>
<th>Head4 </th>
</tr>
<tr>
<td>11</td>
<td>12</td>
<td>13</td>
<td>14</td>
</tr>
<tr>
<td>21</td>
<td>22</td>
<td>23</td>
<td>24</td>
</tr>
<tr>
<td>31</td>
<td>32</td>
<td>33</td>
<td>34</td>
</tr>
<tr>
<td>41</td>
<td>42</td>
<td>43</td>
<td>44</td>
</tr>
</table>1
2
3
4
5
6
7
8table {
border-collapse: collapse;
}
td {
border: 1px solid red;
padding: 10px;
}用于单元格间距
只需调用简单的
table border-spacing 。例子:
1
2
3
4
5
6
7
8
9/********* Cell-Spacing ********/
table {
border-spacing: 10px;
border-collapse: separate;
}
td {
border: 1px solid red;
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32<table>
<tr>
<th>Head1</th>
<th>Head2</th>
<th>Head3</th>
<th>Head4</th>
</tr>
<tr>
<td>11</td>
<td>12</td>
<td>13</td>
<td>14</td>
</tr>
<tr>
<td>21</td>
<td>22</td>
<td>23</td>
<td>24</td>
</tr>
<tr>
<td>31</td>
<td>32</td>
<td>33</td>
<td>34</td>
</tr>
<tr>
<td>41</td>
<td>42</td>
<td>43</td>
<td>44</td>
</tr>
</table>1
2
3
4
5
6
7
8
9/********* Cell-Spacing ********/
table {
border-spacing: 10px;
border-collapse: separate;
}
td {
border: 1px solid red;
}更多的表格样式通过CSS源链接这里你得到更多的表格样式通过CSS。
您可以在CSS中使用
border-spacing 和padding 简单地执行类似的操作:1
2
3
4
5
6
7
8table {
border-collapse: collapse;
}
td, th {
padding: 1em;
border: 1px solid blue;
}1
2
3
4
5
6
7
8
9
10
11
12
13
14<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>- 折叠边框时忽略边框间距规则。
直接将样式添加到表本身怎么样?这不是在CSS中使用
table ,如果页面上有多个表,这是一种糟糕的方法:1
2
3
4
5<table style="border-collapse: separate;border-spacing: 2px;">
<tr>
<td style="padding: 4px 4px;">Some Text</td>
</tr>
</table>- 将"style"放在table标记中比将"table someid"放在css中更糟糕,因为样式应该与内容分离。但问题的关键在于如何将不推荐使用的HTML转换为适当的CSS。你做得对,但你没有在答案中添加任何内容,而是专注于一个无关的问题。
- 什么都没有?!我补充的是,这里的其他答案基本上都是使用
td { padding: ... } 或table { border-spacing: ... } ,而不是直接应用于表格。这些都不算什么。正如我所说,当您的页面上有多个表时,如果您不想影响它们,您就不想这样做!我们不需要一整页的答案说"使用样式表!",因为您只需要为一个单元格或表格设置格式。这就是将它应用于table 或td 是不可取的,并创建一个全新的类,因为它太过杀伤力了。 - 其他所有答案都使用样式表,因为最初的问题是"如何使用CSS来完成此操作"。如果问题是"我怎样才能让CSS只影响这一个表",那么您的回答会更合适(尽管我仍然倾向于
table#someId )。 - 从技术上讲,内联样式仍然是CSS,只是不使用样式表,但我明白你的意思。
- 把一个类添加到表中怎么样?
- 因为类背后的思想是为了可重用性。就一次性而言,这没什么意义,而且太过分了。
- 投反对票的人,想解释一下吗?对于样式表中支持
table 或td 的其他注释,我仍然认为这是一种糟糕的做法。如果你只有一张你想影响的桌子,就像我在谷歌上搜索的那样,那是你最不想要的东西,也是我为什么要发布这个。因为通常情况下,您希望所有的表看起来完全相同并不意味着它总是合适的,因为我有一个不合适的例子,因为显示的数据比我的其他表占用了不成比例的空间,所以需要不同的填充量。人们需要跳出框框思考其他用例。 - 内联CSS总是个坏主意。如果你想设计一个独特的表,那么给它一个
id 属性,并在css:table#id {border-collapse: separate;border-spacing: 2px;} table#id td {padding: 4px 4px;} 中使用它。 - 内联总是坏的?什么?对我来说,你的回答只是重复了所有其他的错误答案。样式表是用于所有包含对象的,而不是一次性的,因此对我来说,将其粘贴到样式表中是一种糟糕的做法。你不需要做很多来回滚动到样式表和一次性表来验证你的正确性和修复/添加东西,当你可以在那里做的时候。更不用说在您必须搜索解决方案以获取样式表中的那个ID之后有人。将单个样式集应用于单个表没有任何错误。
Copyright © 码农家园 联系:[email protected]