选择除CSS中第一个'tr'之外的所有'tr'元素

246 css css-selectors

如何在CSS表中选择tr除第tr一个元素之外的所有元素?

我尝试使用此方法,但发现它不起作用:

http://www.daniel-lemire.com/blog/archives/2008/08/22/how-to-select-even-or-odd-rows-in-a-table-using-css-3/

Mag*_*nar 441

通过向第一个tr或后续的trs 添加一个类.没有crossbrowser方法可以单独使用CSS选择所需的行.

但是,如果您不关心Internet Explorer 6,7或8:

tr:not(:first-child) {
    color: red;
}
Run Code Online (Sandbox Code Playgroud)

  • 我还想指出`tr:not(:first-of-type)`作为一个潜在的解决方案,如果你正在寻找特定选择器的第一个实例而不是第一个通用子. (17认同)
  • 我认为在 2019 年我们用完 IE(IE6 到 IE10 的用户不到 0.5% (5认同)

Bol*_*ock 224

我很惊讶没有人提到兄弟组合器的使用,这些组合器得到IE7及更高版本的支持:

tr + tr /* CSS2, adjacent sibling */
tr ~ tr /* CSS3, general sibling */
Run Code Online (Sandbox Code Playgroud)

它们都以完全相同的方式运行(无论如何在HTML表的上下文中):

tr:not(:first-child)
Run Code Online (Sandbox Code Playgroud)

  • @hairbo:tr + tr会得到任何直接跟随另一个tr的tr.如果你有一个包含三行的表,第三行直接跟在第二行之后,所以它也会匹配.如果你使用tr:first-child + tr,你将只获得一个元素.+和〜之间的唯一区别是〜允许在所提到的两个之间的任何数量的其他元素. (5认同)

Mar*_*les 26

理想的解决方案但IE不支持

tr:not(:first-child) {css}
Run Code Online (Sandbox Code Playgroud)

第二个解决方案是设置所有tr的样式,然后使用css覆盖first-child:

tr {css}
tr:first-child {override css above}
Run Code Online (Sandbox Code Playgroud)


oez*_*ezi 10

听起来像你所说的"第一行"是你的表头 - 所以你真的应该考虑使用theadtbody你的标记(点击这里),这将导致'更好'的标记(语义正确,对屏幕阅读器之类的东西很有用) )和更简单,跨浏览器友好的css选择可能性(table thead ... { ... })


Arm*_*yan 6

另外一个选项:

tr:nth-child(n + 2) {
    /* properties */
}
Run Code Online (Sandbox Code Playgroud)