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

时间:2010-10-25 10:34:14

标签: html css html-table 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/

9 个答案:

答案 0 :(得分:423)

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

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

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

答案 1 :(得分:26)

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

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

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

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

答案 2 :(得分:10)

听起来就像你说的“第一行”是你的表格标题 - 所以你真的应该考虑在你的标记(click here)中使用theadtbody会产生'更好'的标记(语义正确,对于像屏幕阅读器这样的东西很有用)以及更容易,跨浏览器友好的css选择可能性(table thead ... { ... }

答案 3 :(得分:2)

虽然这个问题已经有了不错的答案,但我只想强调: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;
}

也就是说,由于input是孩子,你可以将first-child放在选择器的输入部分。

答案 4 :(得分:1)

对不起,我知道这已经过时了,但为什么不按照你想要的方式设置所有tr元素,除了第一个和使用psuedo类:first-child你撤销你为所有tr元素指定的内容。

更好地通过这个例子描述:

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

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

/帕特里克

答案 5 :(得分:1)

另一种选择:

tr:nth-child(n + 2) {
    /* properties */
}

答案 6 :(得分:0)

因为IE 6,7,8不支持tr:not(:first-child)。您可以使用jQuery的帮助。 你可能会发现它here

答案 7 :(得分:-1)

您还可以在CSS中使用伪类选择器,如下所示:

.desc:not(:first-child) {
    display: none;
}

这不会将类应用于类.desc。

的第一个元素

这是一个带有示例的JSFiddle:http://jsfiddle.net/YYTFT/,这是解释伪类选择器的好来源:http://css-tricks.com/pseudo-class-selectors/

答案 8 :(得分:-3)

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

这可以通过写

来完成
<tr class="unselected">

然后在你的css中有这些行(并使用text-align命令作为例子):

unselected {
  text-align:center;
}



selected {
  text-align:right;
}