在 CSS 中嵌套子选择器

Posted

技术标签:

【中文标题】在 CSS 中嵌套子选择器【英文标题】:Nesting child selectors in CSS 【发布时间】:2014-08-05 06:44:58 【问题描述】:

我有这个 html

<div class="navbar">
    <ul>
        <li>Foo
            <ul>
                <li>Bar</li>
            </ul>
        </li>
    </ul>
</div>

我只想将 CSS 应用于项目“Foo”。我不想用特殊的类标记每个***

。我有限的知识告诉我我应该能够做到这一点:
.navbar > ul > li  
    text-transform: uppercase;

但是当我这样做时,样式也会应用于“酒吧”。我认为'>'只指定直接子级,嵌套时它的工作方式不同吗?我正在尝试做的事情是否可能?

【问题讨论】:

尝试 .navbar ul > li:first-child 。只是在这里猜测。 问题在于样式适用于整个 &lt;li&gt;(文本转换级联),而“子”&lt;li&gt; 是父级的一部分。跨度> 【参考方案1】:

我认为 '>' 只指定直接子级,嵌套时它的工作方式不一样吗?

它确实以相同的方式工作。由于您使用.navbar &gt; ulul 直接锚定到.navbar,因此您的选择器确实仅适用于特定ulli 元素。

问题不在于选择器;这是text-transform, like most text properties, is inherited by default 的事实。因此,即使您仅将样式应用于直接的 li 元素,嵌套的元素也会通过继承接收它。

您需要在嵌套元素上手动反转:

.navbar > ul > li li 
    text-transform: none;

【讨论】:

以上是关于在 CSS 中嵌套子选择器的主要内容,如果未能解决你的问题,请参考以下文章

jQuery选择器和选取方法

jQuery选择器和选取方法.RP

jQuery选择器和选取方法

jQuery选择器和选取方法

在 Gorilla Mux 中嵌套子路由器

匹配 MongoDB 中嵌套子文档的嵌套数组