仅为父母而不是儿童申请css

Rob*_*obz 33 html css

我有一个这样的无序列表:

<div class="list">
<ul>
    <li>
        list1
        <ul>
            <li>Sub list1</li>
            <li>Sub list2</li>
            <li>Sub list3</li>
        </ul>
    </li>
    <li>
        list2
        <ul>
            <li>Sub list1</li>
            <li>Sub list2</li>
            <li>Sub list3</li>
        </ul>
    </li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)

我现在想要只为第一个列表应用CSS,而不是它的子ulli.我尝试过以下方法:

.list ul li{
background:#ccc;
}
Run Code Online (Sandbox Code Playgroud)

...但背景颜色应用于所有列表.应该怎么做才能改变只有父级而不是子级的CSS.

Guf*_*ffa 36

使用直接后代运算符>:

.list > ul > li { ... }
Run Code Online (Sandbox Code Playgroud)

>操作者选择仅是面前的元件(一个或多个)的直接子元素.

但请注意,该列表项内的任何内容当然都具有列表项的背景,尽管没有直接分配给它的任何背景颜色.


Joh*_*han 5

您可以使用>运算符,如下所示:

.list > ul > li{
  background:#ccc; 
}
Run Code Online (Sandbox Code Playgroud)


小智 5

或者,您现在可以执行以下操作:

li:not(li li) { background: #ccc; }
Run Code Online (Sandbox Code Playgroud)