在CSS中,如何选择在其后面有同级标记的标记?

在CSS中,如何选择在其后面有同级标记的标记?,css,css-selectors,Css,Css Selectors,HTML是这样的: <ul> <li> <a>Menu 1</a> </li> <li> <a>Menu 2</a> <ul> <li>Sub menu 2</li> </ul> </li> <li>

HTML是这样的:

<ul>
    <li>
        <a>Menu 1</a>
    </li>
    <li>
        <a>Menu 2</a>
        <ul>
            <li>Sub menu 2</li>
        </ul>
    </li>
    <li>
        <a>Menu 1</a>
    </li>
</ul>
如何使用纯CSS选择后面有同级标记的标记


在上面的示例中,它将是菜单2。

这里是一个可以参考的JSFIDLE文件

CSS

HTML


不幸的是,我认为你不能

css2包括,它允许您选择紧跟在另一个元素之后的元素

例如,a+ul将选择包含文本“子菜单2”的

css3包括,它允许您选择紧跟在另一个元素之后的元素,即使它们之间有元素

例如,a+ul将选择包含文本“Sub-menu 2”的用户,即使与之间存在a

但两者都没有选择器,允许您选择一个元素,该元素后面有特定的元素。

可能通过第n个子元素

ul li:nth-child(2) a { color:#009; }
选择第二个列表项,然后选择后续的定位标记


基本上,使用纯CSS是不行的。如果您选择了子菜单2项,并且OP想要选择菜单2项,您可以这样做。不,请阅读问题。选择具有同级UL的锚。@GusDeCooL这允许您选择锚。。但是没有使用CSS选择父元素的方法。所以答案是-对于纯CSS,你不能或者你必须特别指定锚。
<ul>
    <li>
        <a>Menu 1</a>
    </li>
    <li>
        <a>Menu 2</a>
        <ul>
            <li>Sub menu 2</li>
        </ul>
    </li>
    <li>
        <a>Menu 1</a>
    </li>
</ul>​
ul li:nth-child(2) a { color:#009; }