Html 通过CSS选择第一个不包含嵌套链接的链接

Html 通过CSS选择第一个不包含嵌套链接的链接,html,css,css-selectors,Html,Css,Css Selectors,我有以下HTML: <ul> <li> <a href="#">test</a> <ul class="sub"> <li><a href="#">test 2</a></li> </ul> </li> </ul> 我想影响第一个链接,但不影响第二个链接,如何仅使用CSS实现这一点?您可以简单

我有以下HTML:

<ul>
  <li>
    <a href="#">test</a>
    <ul class="sub">
      <li><a href="#">test 2</a></li>
    </ul>
  </li>
</ul>
我想影响第一个链接,但不影响第二个链接,如何仅使用CSS实现这一点?

您可以简单地做到

ul:not(.sub)>li:first-child>a{
    background:red;
}
您可以使用伪类排除
ul.sub
元素,然后选择直接
  • 或组合属性选择器,如果第一个
    没有
    属性:

    ul:not([class])>li>a{
    背景颜色:金色;
    }
    
    如果主
    中有多个
  • 元素,则可以使用伪类仅选择第一个列表项:

    ul:not(.sub)>li:first child>a{
    背景颜色:金色;
    }
    

    纯css解决方案如下

    ul:not(.sub) > li:first-child > a
    
    但是
    :not
    伪选择器仅在IE9及更新版本中受支持。

    CSS:


    这将选择所有的锚定标签。这不起作用,在Chrome中。然而,这确实是:
    ul:not(.sub)>li:first child>a
    ..@War10ck,是的,谢谢,当然需要直系后代选择器。对我来说很有用-太棒了!!这是不正确的。我不会投你反对票,但这不起作用。
    ul:not(.sub) > li:first-child > a {
        background-color: gold;
    }