如何在CSS中指定表填充? (表,不是单元格填充)

时间:2009-11-17 18:00:05

标签: html css cell padding tablelayout

我有一张带有彩色背景的桌子,我需要在表格及其内容之间指定填充,I.E。细胞。
表标记似乎不接受填充值 Firebug使用填充0显示表和tbody的布局,但不接受为它们输入的任何值,所以我猜他们只是没有填充属性。
但问题是我希望细胞之间的分离与顶部细胞相同,桌面和底部细胞与桌面底部相同。
同样,我想要的不是细胞填充。

编辑:谢谢,我现在意识到,我真正需要的是边界间距,或者它的html等价物,cellspacing。 但出于某种原因,他们在我正在研究的网站上没有做任何事情 两者都在单独的HTML上运行良好,但在网站中它们没有 我认为它可能会覆盖属性,但是cellspacing和内联边框间距不应该被覆盖,对吧? (我用firefox)

编辑2:不,TD填充不是我需要的。使用TD填充,相邻单元的顶部和底部填充总和,因此两个单元之间的空间(实际上是填充)是顶部单元和桌面边界之间的两倍。我希望它们之间的距离完全相同。

12 个答案:

答案 0 :(得分:40)

最简单/最受支持的方法是使用<table cellspacing="10">

css方式: border-spacing (IE不支持我不认为)

    <!-- works in firefox, opera, safari, chrome -->
    <style type="text/css">
    
    table.foobar {
    	border: solid black 1px;
    	border-spacing: 10px;
    }
    table.foobar td {
    	border: solid black 1px;
    }
    
    
    </style>
    
    <table class="foobar" cellpadding="0" cellspacing="0">
    <tr><td>foo</td><td>bar</td></tr>
    </table>

编辑:如果您只想填充单元格内容,而不是填充它们,则只需使用

即可
<table cellpadding="10">

OR

td {
    padding: 10px;
}

答案 1 :(得分:24)

您可以为表格设置边距。或者,将表格包装在div中并使用div的填充。

答案 2 :(得分:23)

这是关于表格你应该理解的东西......它们不是嵌套的独立元素树。它们是单一的复合元素。虽然单个TD的行为或多或少类似于CSS块元素,但中间内容(TABLE和TD之间的任何内容,包括TR和TBODY)都是不可分割的,不会分为内联即可。在该另一维空间中不允许随机HTML元素,并且这种其他维空间的大小根本不能通过CSS配置。只有HTML cellspacing属性才能获得它,并且该属性在CSS中没有模拟。

所以,为了解决你的问题,我建议使用另一张海报建议的DIV包装,或者如果你绝对必须把它保存在表中,你就会有这个丑陋的垃圾:

<style>
    .padded tr.first td { padding-top:10px; }
    .padded tr.last td { padding-bottom:10px; }
    .padded td.first { padding-left:10px; }
    .padded td.last { padding-right:10px; }
</style>

<table class='padded'>
    <tr class='first'>
        <td class='first'>a</td><td>b</td><td class='last'>c</td>
    </tr>
    <tr>
        <td class='first'>d</td><td>e</td><td class='last'>f</td>
    </tr>
    <tr class='last'>
        <td class='first'>g</td><td>h</td><td class='last'>i</td>
    </tr>
</table>

答案 3 :(得分:5)

你不能......也许如果你张贴了想要效果的图片,还有另一种方法来实现它。

例如,您可以将整个表包装在DIV中并将填充设置为div。

答案 4 :(得分:5)

有趣的是,昨天我正在这样做。你只需要在你的css文件中

.ablock table td {
     padding:5px;
}

然后将表格包装在合适的div中

<div class="ablock ">
<table>
  <tr>
    <td>

答案 5 :(得分:2)

使用css,表可以独立于其单元格填充。

padding属性不会被其子级继承。

所以,定义:

table {
    padding: 5px;
}

应该有效。您还可以具体告诉浏览器如何填充(或在这种情况下,不填充)您的单元格。

td {
    padding: 0px;
}

编辑: IE8不支持。遗憾。

答案 6 :(得分:1)

您可以尝试border-spacing属性。那应该做你想要的。但您可能希望看到此answer

答案 7 :(得分:1)

CSS实际上不允许您在表级别执行此操作。通常,我想在达到此效果时指定cellspacing="3"。显然不是一个css解决方案,所以把它当作它的价值。

答案 8 :(得分:1)

还有另一招:

/* Padding on the sides of the table */
table th:first-child, .list td:first-child { padding-left: 28px; }
table th:last-child, .list td:last-child { padding-right: 28px; }

(刚看到我目前的工作)

答案 9 :(得分:0)

table {
    border: 1px solid transparent;
}

答案 10 :(得分:0)

table {
    background: #fff;
    box-shadow: 0 0 0 10px #fff;
    margin: 10px;
    width: calc(100% - 20px); 
}

答案 11 :(得分:0)

vagrant reload

适用于Firefox,Chrome,IE11,Edge。