CSS选择直接子级,但如果在另一个嵌套子级中则不选择

kb5ga3dv  于 2023-01-27  发布在  其他
关注(0)|答案(3)|浏览(161)

因此,如果这是一个元素的HTML:

<div class="parent">
    <div class="ignore-me">
        <p class="child">ignore me</p>
        <p class="child">ignore me</p>
        <p class="child">ignore me</p>
        <!-- I don't know how many <p> gonna be here  -->
    </div>
    <p class="child">paint me green</p>
    <p class="child">paint me blue</p>
</div>

如何才能:

1.是否选择子项.child而不选择div.ignore-me内部的子项?
1.根据它们的索引顺序分别选择它们。
我尝试使用>:nth-child(n)的混合,如下所示:

.parent > .child:nth-child(1)

但是,它不工作!
只能用CSS实现吗?
一个二个一个一个

vcirk6k6

vcirk6k61#

使用div.parent > p.p
>child combinator。它只匹配第二个选择器匹配的元素,这些元素是第一个选择器匹配的元素的直接子元素。

div.parent > p.p {
color:green;
}
<div class="parent">
    <div class="ignore-me">
        <p class="p">don't select me</p>
        <p class="p">don't select me</p>
        <p class="p">don't select me</p>
        <!-- I don't know how many <p> gonna be here  -->
    </div>
    <p class="p">select me</p>
    <p class="p">select me too</p>
</div>
nwo49xxi

nwo49xxi2#

接受的答案可以进一步简化为div.parent > p,因为>已经只选择直接子节点。

div.parent > p {
  color:green;
}
<div class="parent">
    <div class="ignore-me">
        <p>don't select me</p>
        <p>don't select me</p>
        <p>don't select me</p>
        <!-- I don't know how many <p> gonna be here  -->
    </div>
    <p>select me</p>
    <p>select me too</p>
</div>

关于
根据它们的索引顺序分别选择它们。
您可以使用:nth-child,但请注意:nth-child也将<div class="ignore-me">视为<div class="parent">的子项。因此,您的第一个<p class="child">是第二个子项。然后,您可以使用evenodd在子项之间交替。
一个二个一个一个

bbuxkriu

bbuxkriu3#

选择“parent”类中的直接第n个p标记
div.parent>p.child:nth-child(2) {
    background: green;
}

div.parent>p.child:nth-child(3) {
    background: blue;
}

div.parent>p.child:nth-child(4) {
    background: green;
}

我们可以挑选一些古怪的孩子

div.parent>p.child:nth-child(odd) {
    background: green;
}

div.parent>p.child:nth-child(even) {
    background: red;
}

相关问题