2012-03-25 64 views
1

我试图选择类“subnav”的第一个行项目(<li>)。选择嵌套元素的第一个子项时遇到问题

我似乎无法得到它:

HTML:

<nav> 
<ul class="navigation"> 

<li class="logo"><ul> 
    <li><a href="index.htm"><img src="images/rh_logo_v5.png" alt="roundhaus logo"/></a></li> 
</ul></li> 
<li class="subnav"><ul> 
    <li><a href="index.htm">home</a></li> 
    </ul></li> 
<li class="subnav"><ul> 
    <li><a href="reclaimedwood.htm">reclaimed wood</a></li> 
     <li><a href="design.htm">design</a></li> 
    </ul></li> 
    <li class="subnav"><ul> 
    <li><a href="flooring.htm">flooring</a></li> 
    <li><a href="paneling.htm">paneling</a></li> 
    <li><a href="beams.htm">beams</a></li> 
</ul></li> 
<li class="subnav"><ul> 
    <li><a href="shelving.htm">shelving</a> 
    </li><li><a href="mantels.htm">mantels</a></li> 
</ul></li> 
<li class="subnav"><ul> 
    <li><a href="news.htm">news</a></li> 
</ul></li> 
<li class="subnav"><ul> 
    <li><a href="woodtypes.htm">wood types</a></li> 
    <li><a href="phrases.htm">phrases</a></li> 
</ul></li> 

</ul> 
</nav> 

会是什么CSS选择器是与类“subnav”行项目的第一个实例?

+1

'li'代表*列表*项目,而非*行*项目:) – BoltClock 2012-03-25 14:47:13

+0

您想要选择

  • home
  • ? – 2012-03-25 15:08:12

    回答

    1

    如果第一.subnav项目单.logo项目之后立即开始,你可以使用

    li.logo:first-child + li.subnav 
    

    请注意,在您的标记的:first-child实际上是.logo,而不是.subnav项目之一。如果您尝试使用li.subnav:first-child,那就是无法使用的原因。

    +0

    谢谢,那已经工作了。作为一名新手,似乎要记住一个棘手的问题 - 我不确定未来是否可以复制该方法,因为我没有先选择标识的逻辑。当然,必须有办法根据课堂选择第一个孩子吗? – 2012-03-25 14:57:13

    +0

    @Doug Firr:不幸的是CSS没有提供一个选择器来匹配第一个孩子和一个类。我提出了一个涉及重写规则的详细而多功能的技巧,您可以在[本答案](http://stackoverflow.com/a/8539107/106224)中看到,但是您的结构允许采用更简单的方法我跟这里去了。有一个关于在这个答案中允许使用CSS4选择器的可能性的说明,但是这对于相对遥远的未来... – BoltClock 2012-03-25 14:59:56

    +0

    所以现在没有第一个基于类的儿童选择器 - 感谢信息。你真的帮我选择了这个选择器 – 2012-03-25 15:08:21

    0

    如果您正在使用jQuery只需使用

    "li.subnav:first" 
    

    ,那么你可以先用subnav:

    $("li.subnav:first") 
    

    希望这有助于。

    +0

    你**有**可以使用jQuery或其他一些选择器库。 ':first'不是一个CSS选择器。 – BoltClock 2012-03-25 15:00:20