为什么不对表元素应用填充?

时间:2013-03-24 06:49:13

标签: html css

这更像是“告诉我它为什么不起作用”而不是“帮助我修复它”的问题。如果我尝试将填充应用于表中的thead或tr元素,则它不起作用。填充的唯一方法是将其直接应用于th或td元素。为什么会这样?是否有一种简单的方法可以将填充应用于整个thead或tr,或者将其添加到th和td是唯一的选项?

<table>
    <thead>
        <tr>
            <th>Destination</th>
            <th>Size</th>
            <th>Home Value</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>test 1</td>
            <td>test 2</td>
            <td>test 3</td>
        </tr>
    </tbody>
</table>

注意thead上的10px填充。

table {
    width: 100%;
}

thead {
    text-align: left;
    background-color: yellow;
    padding: 10px;
}

http://jsfiddle.net/5VQB7/

7 个答案:

答案 0 :(得分:16)

http://www.w3.org/TR/CSS2/box.html#propdef-padding

  

<强> '填充'

     

适用于: table-row-group,table-header-group,table-footer-group, table-row ,table-column-group和table-column

答案 1 :(得分:5)

尝试将填充放在th元素中。通常,您希望根据具体情况向thtd元素添加填充。

thead th {
  padding: 10px;
}

答案 2 :(得分:2)

thead不支持css属性“padding”如果你需要在thead中应用css然后css修改如下:

thead tr th {
    text-align: left;
    background-color: yellow;
    padding: 10px;
}

或者

th {
    text-align: left;
    background-color: yellow;
    padding: 10px;
}

答案 3 :(得分:2)

CSS2.1的相关部分: Tables

请查看此图表:table layerspadding只能作为一个整体应用于table,或仅适用于thtd个细胞。不要忘记caption。其他层在各种表格布局算法中足够复杂,没有应用填充^^

这是一个小提琴http://jsfiddle.net/QB97d/1/,展示了你可以玩的其他属性。

  • border-spacing: 8px 10px; 就像表格的每个单元格周围的边距一样。用border-collapse: collapse;
  • 摆脱它
  • table-layout: fixed;会触发一个完全不同的算法(“渲染宽度,因为我告诉你,不再关心每个单元格中内容的相对数量”)
  • border是在padding
  • 周围为元素提供空间的另一种方式
  • empty-cells: hide可能会触发特殊行为

这个小提琴中没有显示:

  • 玩选择器在IE9 +中选择一个表格的4个角,每个角落都有一个thead元素和未知类型的单元格(我会让你找到4个边缘;)):

    • thead th:first-child, thead td:first-child
    • thead th:last-child, thead td:last-child
    • tbody:last-child tr:last-child th:first-child, tbody:last-child tr:last-child td:first-child
    • tbody:last-child tr:last-child th:last-child, tbody:last-child tr:last-child td:last-child
  • box-sizing: border-box(和它的供应商前缀)用于计算单元格宽度,考虑填充和边框宽度(就像IE6在Quirks模式下做的那样,哦讽刺...... )< / p>

答案 4 :(得分:1)

划桨左边&amp;权利总是适用于td或th。

但是,如果是padding-top&amp; padding-bottom,你要求td(或th)增加它的高度。然后兄弟姐妹呢?你期望发生什么?

因此,为了使填充顶部或底部起作用,您可以应用它的父级,即父级单元格。

答案 5 :(得分:1)

因为标签喜欢它们并不意味着填充表格,而是包含其他元素。 让我们说清楚:如果你想在你的表中添加标题,你不会插入它,而是你将它添加到里面,并且相同的,如果你想在表中填充数据,你需要将它们插入到里面

我希望这个答案澄清你的问题

答案 6 :(得分:1)

theadtbody之间填充

很遗憾,theadtbodytr都无法使用填充。

尽管如此,通过选择表主体第一行的数据单元格,可以在theadtbody之间进行更多填充:

tbody tr:first-child td {
    padding-top: 2.5ex;
}

这样做,保留任何标题边框的相对位置。