2014-03-03 54 views
0

我有以下的HTML中的嵌套链接的第一个链接:选择不包括CSS

<ul> 
    <li> 
    <a href="#">test</a> 
    <ul class="sub"> 
     <li><a href="#">test 2</a></li> 
    </ul> 
    </li> 
</ul> 

我想影响的第一个环节,但不是第二个,我该怎么办这个只用CSS?

回答

6

可以使用:not()伪类排除ul.sub元素,然后选择直接<li><a>孩子如下:

在这里你去:

ul:not(.sub) > li > a { 
    background-color: gold; 
} 

WORKING DEMO

或组合属性选择,如果第一个<ul>没有class属性:

ul:not([class]) > li > a { 
    background-color: gold; 
} 

如果有多个<li>元素在主<ul>,您可以使用:first-child伪类,只选择第一列表项:

ul:not(.sub) > li:first-child > a { 
    background-color: gold; 
} 

UPDATED DEMO

1

你可以简单地做

ul:not(.sub)>li:first-child>a{ 
    background:red; 
} 
+2

,这将选择所有锚标签。 –

1

甲纯CSS解决方案将是如下

ul:not(.sub) > li:first-child > a 

:not伪选择仅在IE9和较新的支持。

+0

这在Chrome中不起作用,[demo](http://jsfiddle.net/warlock5658/X8f2w/)。不过这样做:'ul:not(.sub)> li:first-child> a' [modified demo](http://jsfiddle.net/warlock5658/X8f2w/1/)... – War10ck

+0

@ War10ck,是的,谢谢,当然需要直接后代选择器。 – skip405

+0

适合我 - 太棒了! – michaelmcgurk

0

http://jsfiddle.net/4aA7c/

CSS:

ul:not(.sub) > li:first-child > a { 
    background-color: gold; 
} 
+0

这是不正确的。我不会冷落你,但这不会奏效。 – Siyah

+0

你是对的我有我的css。 – Marcel