使用CSS定位嵌套列表中元素的所有相邻兄弟节点

时间:2015-04-03 14:07:56

标签: css css-selectors

这是我在我网站上的简化标记:

<div id="block">
    <ol>
        <li> <--
            <ol>
                <li>
                    ...
                </li>
            </ol>
        </li> <--
    </ol>       
    <ol>
        <li> <--
            <ol>
                <li>
                    ...
                </li>
            </ol>
        </li> <--
    </ol>
</div>

我想仅定位每个顶级li中的第一级ol元素(我用箭头标记它们)。

我应该如何编写选择器来定位这些元素?

4 个答案:

答案 0 :(得分:2)

你可以这样做

#block > ol > li

使用&gt;将确保它更深一层,而不是更多。

答案 1 :(得分:2)

您可以使用子组合子选择器,但需要小心,因为某些CSS属性是继承的。

例如,list-style属性仅适用于第一个li,因为选择器。但是,color属性将被继承。

您可能需要使用重置规则将某些属性重置为某个默认值。

#block > ol > li {
  color: blue;
  list-style: circle;
}
#block > ol > li * {
  color: black;
}
<div id="block">
    <ol>
        <li> <--
            <ol>
                <li>
                    ...test
                </li>
            </ol>
        </li> <--
    </ol>       
    <ol>
        <li> <--
            <ol>
                <li>
                    ...test
                </li>
            </ol>
        </li> <--
    </ol>
</div>

答案 2 :(得分:1)

#block ul > li {}

有关详细信息,请参阅https://css-tricks.com/child-and-sibling-selectors/

答案 3 :(得分:0)

使用child combinator仅限儿童

#block > ol > li { … }

这会自动排除descendant li元素。