问题描述

我想在表中对最后一个 TD 进行风格,而不需要在特定的 TD 上使用 CSS 类。

<table>
  <tbody>
    <tr>
      <td>One</td>
      <td>Two</td>
      <td>Three</td>
      <td>Four</td>
      <td>Five</td>
    </tr>
  </tbody>
</table>

table td
{
  border: 1px solid black;
}

我想要 TD 包含文本”Five” 没有边框,但是再次,我不想使用一个类。

最佳解决方案

您可以使用相关规则:

table td + td + td + td + td {
  border: none;
}

只有在运行时没有确定列数时,这才有效。

次佳解决方案

:last-child 选择器应该做,但它是 not supported in any version of IE

我恐怕别无选择,只能用一个课。

第三种解决方案

您可以使用:last-of-type pseudo-class:

tr > td:last-of-type {
    /* styling here */
}

有关更多信息和与不同浏览器的兼容性,请参阅 the MDN 。查看 W3C CSS guidelines 了解更多信息。

第四种方案

如果你已经在使用 JavaScript,看看 jQuery 。它支持浏览器独立的”last-child” 选择器,你可以这样做。

$("td:last-child").css({border:"none"})

第五种方案

你可以使用 last-child psuedo 类

table tr td:last-child {
    border: none;
}

这将仅仅是最后一个 td 的风格。它尚未完全支持,因此可能不适用

第六种方案

尝试:

tr:last-child td:last-child{
    border:none;
    /*any other style*/
}

这只会影响表中最后一个 td 元素,假设是唯一的 (否则,你只需要识别你的表) 。尽管如此,如果您将更多的内容添加到表中,那么它将会适应最后一个 TD 。所以如果是一个特定的情况

td:nth-child(5){
    border:none;
}

应该够了

第七种方案

Javascript 是唯一可行的方法来做这个客户端 (即 CSS 不会帮助你) 。在 jQuery 中:

$("table td:last").css("border", "none");

第八种方案

您可以使用 HTML 4.0(link) 中指定的 col 元素。它适用于每个浏览器。你可以给它一个 ID 或一个类或一个内联样式。只需要注意的是它会影响所有行的整个列。例:

<table>
    <col />
    <col width="50" />
    <col id="anId" />
    <col class="whatever" />
    <col style="border:1px solid #000;" />
    <tbody>
        <tr>
            <td>One</td>
            <td>Two</td>
            <td>Three</td>
            <td>Four</td>
            <td>Five</td>
        </tr>
    </tbody>
</table>

第九种方案

在 jQuery 中,只要在执行以下操作之前静态或动态创建表:

$("table tr td:not(:last-child)").css({ "border-right":"1px solid #aaaaaa" });

只需在表格列中的每个单元格添加一个右边框,除了最后一个单元格。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛