如何选择除CSS中的第一个tr
以外的所有tr
元素?
我尝试使用此方法,但发现它不起作用:
答案 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)中使用thead
和tbody
会产生'更好'的标记(语义正确,对于像屏幕阅读器这样的东西很有用)以及更容易,跨浏览器友好的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元素指定的内容。
更好地通过这个例子描述:
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;
}