問題描述

我想在表中對最後一個 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇