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

如何在父元素table上使用Tailwind的nth-child选择器实现隔行样式

表格隔行背景色的纯Tailwind实现方案

想要实现表格隔行不同背景色效果,目前是给每个<tr>标签添加odd:bg-white even:bg-slate-100类,但希望仅在<table>父元素上添加一次Tailwind类完成。尝试过一些写法未生效,当前用自定义CSS结合@apply实现,求纯Tailwind方案。

当前做法

<table>
  <tr class="odd:bg-white even:bg-slate-100">
    <td>name</td>
    <td>title1</td>
  </tr>
  <tr class="odd:bg-white even:bg-slate-100">
    <td>name</td>
    <td>title1</td>
  </tr>
  <tr class="odd:bg-white even:bg-slate-100">
    <td>name</td>
    <td>title1</td>
  </tr>
</table>

尝试的无效写法

<table class="--odd:bg-white even:bg-slate-100 [&:nth-child(odd)]:bg-gray-400">
  <tr>
    <td>name</td>
    <td>title1</td>
  </tr>
  <tr>
    <td>name</td>
    <td>title1</td>
  </tr>
  <tr>
    <td>name</td>
    <td>title1</td>
  </tr>
</table>

当前自定义CSS实现方式

<style lang="postcss">
    div.plan-details :nth-child(odd) {
        @apply text-zinc-500;
    }
    div.plan-details :nth-child(even) {
        @apply text-zinc-900;
    }
</style>

纯Tailwind解决方案

直接在<table>标签上使用Tailwind的自定义选择器类,指定子元素<tr>的奇偶行样式:

<table class="[&_tr:nth-child(odd)]:bg-white [&_tr:nth-child(even)]:bg-slate-100">
  <tr>
    <td>name</td>
    <td>title1</td>
  </tr>
  <tr>
    <td>name</td>
    <td>title1</td>
  </tr>
  <tr>
    <td>name</td>
    <td>title1</td>
  </tr>
</table>

原理说明

  • [&_tr:nth-child(odd)]:bg-white:选择当前<table>下的所有奇数位置<tr>,设置背景色为白色
  • [&_tr:nth-child(even)]:bg-slate-100:选择当前<table>下的所有偶数位置<tr>,设置背景色为slate-100

该方案无需修改Tailwind配置,完全通过inline类实现需求,符合纯Tailwind的实现要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:55:19