You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么:first-child伪类选择器会选中父元素下所有层级的首/尾子元素

问题原因

你编写的CSS选择器存在两处逻辑错误:

  • table :first-child、table :last-child中table和伪类之间的空格属于后代选择器标识,含义是匹配table所有后代元素里,属于各自父元素第一个/最后一个子节点的所有元素,因此所有tr、th、td只要是父级的首尾子元素都会被命中,才会出现大面积绿色的错误效果。
  • table tbody:nth-child(odd)的选择对象错误,你想要选中的是tbody下的奇数行<tr>,当前写法只会选中作为table子元素的奇数位tbody,你页面只有1个tbody,会导致整个tbody全部变红。
修正后的代码

CSS 代码

table {
    border: 1px solid #c4dcf3;
    border-collapse: collapse;
}
th, td {
    border: 1px solid #c4dcf3;
    padding: 6px 12px;
}
/* 选中表头、表脚行设置绿色背景 */
thead tr, tfoot tr {
    background-color: green;
}
/* 选中tbody内的奇数行设置红色背景 */
tbody tr:nth-child(odd) {
    background-color: red;
}

HTML 代码(原有结构无需修改)

<table>
    <thead>
        <tr>
            <th>Country</th>
            <th>OrderID</th>
            <th>Order Amount</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>USA</td>
            <td>1000</td>
            <td>$1,300</td>
        </tr>
        <tr>
            <td>USA</td>
            <td>1001</td>
            <td>$700</td>
        </tr>
        <tr>
            <td>CA</td>
            <td>1002</td>
            <td>$2,000</td>
        </tr>
        <tr>
            <td>CA</td>
            <td>1003</td>
            <td>$1,000</td>
        </tr>
    </tbody>
    <tfoot>
        <tr>
            <td>Total</td>
            <td></td>
            <td>$5,000</td>
        </tr>
    </tfoot>
</table>

修正后即可实现表头、表脚行背景为绿色,tbody内奇数行背景为红色的预期表格效果。

内容的提问来源于stack exchange,提问作者MiiRana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:45:03