我想选择表的第三行而不使用伪类或不对行应用类(更多的是练习兄弟姐妹运算符的工作)。
但它也适用于第四行及其后的行。
tbody > tr + tr + tr {
color: blue;
}
<table>
<tbody>
<tr><td>Hello</td></tr>
<tr><td>World</td></tr>
<tr><td>Should be blue</td></tr>
<tr><td>Should not be blue</td></tr>
</tbody>
</table>
答案 0 :(得分:4)
没有 pseudo 选择器?好吧,您可以在color: initial
上使用tbody > tr + tr + tr + tr
(您可以使用tr
重置在此选择器中的第三个initial
上应用的所有属性-请参见下面的演示:
tbody > tr + tr + tr {
color: blue; /* styles for the third row */
}
tbody > tr + tr + tr + tr{
color: initial; /* reset all the styles applied in the third row here */
}
<table>
<tbody>
<tr><td>Hello</td></tr>
<tr><td>World</td></tr>
<tr><td>Should be blue</td></tr>
<tr><td>Should not be blue</td></tr>
</tbody>
</table>
答案 1 :(得分:1)
使用它,如果您不想使用伪类或不对行应用类,则可以使用它。
tbody > tr + tr + tr + tr {
color: initial;
}
tbody > tr + tr + tr {
color: blue;
}
答案 2 :(得分:0)
您的规则匹配三个兄弟姐妹的任何一个任何组,而不仅仅是第一个。
CSS 相邻同级组合器(+
)在同级元素之后立即定位一个元素。
为了对比,通用同级组合器(~
)的目标是同级元素之后的元素(不必紧随其后)。
您的规则存在的问题是它匹配两种情况。
这是您的代码:
tbody > tr + tr + tr {
color: blue;
}
<table>
<tbody>
<tr><td>Hello</td></tr>
<tr><td>World</td></tr>
<tr><td>Should be blue</td></tr>
<tr><td>Should not be blue</td></tr>
</tbody>
</table>
tr + tr + tr
的意思是:选择紧跟在表行之后的表行,也紧跟在表行之后。您有四行,因此这种情况在您的代码中存在两次:
比赛1
比赛2
其他潜在匹配项:
CSS ID,类和pseudo-classes
可以在这种情况下为您提供帮助。
MDN参考: