在HTML表格中,cellpadding
and cellspacing
可以这样设置:
<table cellspacing="1" cellpadding="1">
使用CSS如何完成相同的工作?
在HTML表格中,cellpadding
and cellspacing
可以这样设置:
<table cellspacing="1" cellpadding="1">
使用CSS如何完成相同的工作?
Answers:
基本
要在CSS中控制“ cellpadding”,您只需padding
在表格单元格上使用即可。例如10px的“ cellpadding”:
td {
padding: 10px;
}
对于“ cellspacing”,可以将border-spacing
CSS属性应用于表。例如10px的“ cellspacing”:
table {
border-spacing: 10px;
border-collapse: separate;
}
该属性甚至允许单独的水平和垂直间距,而老式的“单元间距”则无法做到这一点。
IE <= 7中的问题
除了通过Internet Explorer 7的Internet Explorer,几乎在所有流行的浏览器中都可以使用,您几乎不走运。我说“几乎”是因为这些浏览器仍支持该border-collapse
属性,该属性合并了相邻表格单元的边界。如果你想消除CELLSPACING(也就是cellspacing="0"
),那么border-collapse:collapse
应该有同样的效果:表格单元格之间没有空格。但是,此支持存在很多问题,因为它不会覆盖cellspacing
table元素上的现有HTML属性。
简而言之:对于非Internet Explorer 5-7浏览器,border-spacing
您一定会满意。对于Internet Explorer,如果您的情况恰到好处(您希望0个单元格间距并且表尚未定义),则可以使用border-collapse:collapse
。
table {
border-spacing: 0;
border-collapse: collapse;
}
注意:有关可应用于表以及哪些浏览器的CSS属性的概述,请参见此奇妙的Quirksmode页面。
浏览器的默认行为等效于:
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方法。
table
{
border-collapse: collapse; /* 'cellspacing' equivalent */
}
table td, table th
{
padding: 0; /* 'cellpadding' equivalent */
}
cellspacing=0
等效的。的等效项cellspacing=1
完全不同。请参阅已接受的答案。
table td
和table th
只是td
和th
分别?无论哪种方式都可以工作,但是选择器越小,匹配的速度就越快
table > tr > td
and table > tr > th
。这几乎tr
和th
和一样快,并且如果有嵌套表,则可以保证正常工作。Just my 2c
table
需要选择器吗?IIRC,<td>
除非位于a中,否则a 是无效的<tr>
。
据我所知,在表格单元格上设置边距实际上并没有任何效果。真正的CSS等效项cellspacing
是border-spacing
-但在Internet Explorer中不起作用。
border-collapse: collapse
如前所述,您可以用来将像元间隔可靠地设置为0,但是对于任何其他值,我认为唯一的跨浏览器方法是继续使用该cellspacing
属性。
border-collapse
仅在IE 5-7中有效,前提是该表尚未cellspacing
定义属性。我写了一个全面的答案,如果有帮助的话,可以合并此页面上其他答案的所有正确部分。
此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中,您可以传递比预期更多的参数,并且所有参数都将被求值。
对于那些想要非零cellpacing值的人,以下CSS对我有用,但我只能在Firefox中对其进行测试。
有关兼容性的详细信息,请参见其他地方发布的Quirksmode链接。似乎它不适用于较旧的Internet Explorer版本。
table {
border-collapse: separate;
border-spacing: 2px;
}
此问题的简单解决方案是:
table
{
border: 1px solid #000000;
border-collapse: collapse;
border-spacing: 0px;
}
table td
{
padding: 8px 8px;
}
用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进行了测试,因为这是我们允许在工作中使用的全部。
这种风格是完全复位表 - CELLPADDING,CELLSPACING和边界。
我的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 */
}
table th,td {
padding: 8px 2px;
}
table {
border-collapse: separate;
border-spacing: 2px;
}
从W3C分类中了解到,<table>
s表示“仅”显示数据。
基于此,我发现<div>
使用position: absolute;
和background: transparent;
... 创建具有背景和所有内容的表要容易得多,并且使用和...
它可以在Chrome,Internet Explorer(6和更高版本)和Mozilla Firefox(2和更高版本)上运行。
页边距被使用(或反正意味着)来创建容器元素,例如之间的间隔件<table>
,<div>
并且<form>
,不<tr>
,<td>
,<span>
或<input>
。将其用于除容器元素之外的任何其他内容,将使您忙于调整网站以供将来浏览器更新。
您可以使用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>
尝试这个:
table {
border-collapse: separate;
border-spacing: 10px;
}
table td, table th {
padding: 10px;
}
或尝试以下方法:
table {
border-collapse: collapse;
}
table td, table th {
padding: 10px;
}
我!important
在边界崩溃后使用
border-collapse: collapse !important;
它在IE7中对我有用。似乎覆盖了cellpacing属性。
!important
仅在复杂情况下才需要覆盖其他CSS设置(甚至是错误的方法)。
!important
,可以将其作为注释而不是其他答案。
td {
padding: npx; /* For cellpadding */
margin: npx; /* For cellspacing */
border-collapse: collapse; /* For showing borders in a better shape. */
}
如果margin
不起作用,请尝试设置display
为tr
to block
,然后保证金将起作用。
在HTML表格中,cellpadding
and 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样式表提供了更多样式。
您可以使用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>
直接将样式添加到表本身如何?这不是table
在CSS 中使用,如果页面上有多个表,这是一种BAD方法:
<table style="border-collapse: separate;border-spacing: 2px;">
<tr>
<td style="padding: 4px 4px;">Some Text</td>
</tr>
</table>
td { padding: ... }
或table { border-spacing: ... }
,而不是直接将其应用于表格。那些没有增加。就像我说的那样,当页面上有多个表并且不想影响它们时,就不要这样做了!我们不需要一整页的答案说“使用样式表!”,这也许是您最后想要的,因为您只想为一个单元格或表格设置格式。那是在将其应用于table
或td
不受欢迎时,并且为其创建一个全新的类太过分了。
table#someId
)。
您可以检查以下代码,只需创建一个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>
输出:
width:auto
则border-collapse
可能无法按预期工作。