答案是使用 thead 或 :first-child 结合 background-image: linear-gradient() 实现表格首行渐变背景,因 ::first-row 浏览器支持差,推荐将表头置于 thead 内并设置渐变样式,或用 tr:first-child 选择首行应用 background-image,确保兼容性与效果稳定。

要实现css表格首行背景色渐变,不能使用 background-color,因为它是纯色属性,不支持渐变。你应该使用 background-image 配合线性渐变(linear-gradient)。同时,目前CSS中用于选中表格首行的伪类是 ::first-row,但需注意浏览器支持情况。
1. 使用 ::first-row 实现首行渐变背景
::first-row 是一个实验性伪元素,理论上可用于选中表格第一行,但目前主流浏览器并不支持这个选择器。因此直接使用 tr::first-row 或 table::first-row 通常无效。
- 给表格第一行加上
<thead> 包裹 <li>使用 <code>thead tr或thead th设置渐变背景
2. 推荐做法:使用 thead + background-image
通过将表头放入 <thead>,再对 <code>thead 应用渐变背景,这是最稳定兼容的方式。
立即学习“前端免费学习笔记(深入)”;
<table> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>城市</th> </tr> </thead> <tbody> <tr> <td>张三</td> <td>25</td> <td>北京</td> </tr> </tbody> </table>
thead { background-image: linear-gradient(to right, #667eea, #764ba2); color: white; } th { padding: 10px; text-align: left; }
3. 替代方案:使用 :first-child 选择第一行
如果你没有使用 <thead>,也可以通过选择第一行的 <code>tr 来设置背景:
table tr:first-child { background-image: linear-gradient(90deg, #ff9a9e, #fecfef); } table tr:first-child td { color: white; }
注意::first-child 会选中第一个子元素,所以确保第一行确实是第一个 tr。
基本上就这些。虽然 ::first-row 听起来理想,但现实开发中建议用 thead 或 :first-child 搭配 background-image: linear-gradient() 实现表格首行渐变背景,兼容性和可控性更好。