【发布时间】:2017-05-16 07:36:13
【问题描述】:
也许这个问题很荒谬,但我想知道这个事实。我有一个带有两个类的li 元素(见下文),但它没有按我预期的那样工作。有人知道原因吗?
.red:first-child {
color:#F00;
}
.blue:first-child {
color:#00F; /* not working */
}
.red:last-child {
color:#F00; /* not working */
}
.blue:last-child {
color:#00F;
}
<ul>
<li class="red">one</li> <!-- This is the first child of red -->
<li class="red">two</li>
<li class="red">three</li>
<li class="blue">one</li> <!-- and this first child of blue -->
<li class="blue">two</li>
<li class="blue">three</li>
</ul>
【问题讨论】:
-
它按预期工作。
<li class="blue">one</li>不是父ul的first-child -
@Satpal:不,它没有按预期工作......
-
问题存在于对
:first-child或:last-child选择器的错误理解。只有当一个元素分别是其父元素的第一个或最后一个子元素时,它们才会选择任何元素。 -
您的选择器
.blue:first-child不起作用,因为.blue不是父母的第一个孩子。这是这个选择器实现背后的想法,对我来说它很合乎逻辑。 -
@mnemosdev: 不,ul:first-child 匹配 ul 的方式与 ul.example(带有类选择器)匹配 ul 的方式大致相同。它与其他元素不匹配。同样, .red:first-child 匹配任何具有 .red 类的元素,而不是其父级或子级。