选择除第一个以外的所有“ tr”


257

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

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


1
需要与哪些浏览器兼容?
Pekka 2010年


@Pekka的问题很重要,因为我想不出任何方法来使用适用于各种版本IE的标准CSS。如果您需要支持IE,则唯一可行的解​​决方案是第<tr>一个类,其余类则不同。
Spudley

我并不担心IE,但可以在FF和GC中使用

Answers:


466

通过将类添加到第一个tr或后续trs中。没有单独使用CSS来选择所需行的跨浏览器方法。

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

tr:not(:first-child) {
    color: red;
}

18
tr:not(:first-of-type)如果您要查找特定选择器的第一个实例而不是第一个广义子代,那么我也想指出一个潜在的解决方案。
约书亚伯恩斯

2
我认为,在2019年,我们将完成IE(不到IE6到IE10用户的0.5%
Webwoman

227

令我惊讶的是,没有人提到使用同级组合器,而IE7和更高版本支持这种组合器:

tr + tr /* CSS2, adjacent sibling */
tr ~ tr /* CSS3, general sibling */

它们的功能完全相同(无论如何在HTML表的上下文中),其功能如下:

tr:not(:first-child)

1
等等...这应该如何被接受?您不能从该语句中获得“除第一之外的所有内容”,这就是OP的要求。tr + tr将使您获得一个要素。我想tr〜tr会让你们全部(我猜像parent:first-
child〜tr之

5
@hairbo:tr + tr将使您直接跟随另一个tr的任何tr。如果您有一个包含三行的表,则第三行紧随第二行,因此也将匹配。如果仅使用tr:first-child + tr,则只会得到一个元素。+和〜之间的唯一区别是〜允许在上述两个之间包含任意数量的其他元素。
BoltClock

elem + elem当要定位的元素不是唯一的子元素时,它才是一个很好的通用解决方案。例如,如果a <h2>后跟多个<p>标签,则<p>在这种情况下,第一个不是第一个孩子。
DisgruntledGoat

27

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

tr:not(:first-child) {css}

第二个解决方案是设置所有tr的样式,然后为第一个孩子用css覆盖:

tr {css}
tr:first-child {override css above}

10

听起来像您正在谈论的“第一行”是表格标题-所以您确实应该考虑使用theadtbody在标记中(单击此处),这将导致“更好”的标记(从字面上看是正确的,对屏幕阅读器等有用) ),以及更轻松,跨浏览器友好的css选择(table thead ... { ... }


3

尽管问题已经有了一个不错的答案,但我只想强调一下,:first-child标签位于代表孩子的物品类型上。

例如,在代码中:

<div id"someDiv">
     <input id="someInput1" /> 
     <input id="someInput2" />
     <input id="someInput2" />
</div

如果只想用边距影响后两个元素,而不是第一个,请这样做:

#someDiv > input {
     margin-top: 20px;
}
#someDiv > input:first-child{
     margin-top: 0px;
}

也就是说,由于inputs是子级,因此应将其放置first-child在选择器的输入部分上。


1

抱歉,我知道这很旧,但是为什么不按除第一个元素之外的所有tr元素来设置所有tr元素的样式,并使用psuedo类:first-child撤销为所有tr元素指定的内容。

此示例更好地描述了:

http://jsfiddle.net/DWTr7/1/

tr {
    border-top: 1px solid;
}
tr:first-child {
    border-top: none;   
}

/帕特里克


1

由于tr:not(:first-child)IE 6、7、8不支持。您可以使用jQuery的帮助。你可以在这里找到



0

可能有人可以受益,以下是我所使用的

ol li:not(:first-child) {
    background: black;
    color: white;
}


-3

您可以创建一个类,并在定义要(或不希望)由CSS选择的所有future时使用该类。

这可以通过编写完成

<tr class="unselected">

然后在具有行的CSS中(并使用text-align命令作为示例):

unselected {
  text-align:center;
}



selected {
  text-align:right;
}

2
恳求理解回答提出的问题
阿马尔Bozorgvar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.