2012-03-25 3 views
1

Я пытаюсь выбрать первую позицию (<li>) с классом «subnav».проблема выбора первого дочернего элемента вложенных элементов

Я просто не могу показаться, чтобы получить его:

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' означает * список * item, not * line * item :) – BoltClock

+0

Вы пытаетесь подобрать

  • home
  • ? –

    ответ

    1

    Если первый .subnav пункт начинается сразу после того, как один .logo элемента, вы можете использовать

    li.logo:first-child + li.subnav 
    

    Обратите внимание, что :first-child в разметке на самом деле .logo, а не один из .subnav пунктов. Если вы пытались использовать li.subnav:first-child, это причина, почему он не работает.

    +0

    спасибо, что сработало. Как новичок, кажется сложным вспомнить - я не уверен, смогу ли я повторить этот метод в будущем, потому что у меня нет логики выбора логотипа в первую очередь? Неужели должен быть способ выбрать первого ребенка на основе класса? –

    +0

    @Doug Firr: К сожалению, CSS не предоставляет селектор для сопоставления первого ребенка с классом. Я придумал несколько многогранный, но универсальный трюк, который включает в себя переопределяющее правило, которое вы можете увидеть в [этом ответе] (http://stackoverflow.com/a/8539107/106224), но ваша структура позволяет использовать более простой подход, который Я пошел сюда. Есть заметка о возможности разрешить это с помощью селекторов CSS4 в этом ответе, но это для немного отдаленного будущего ... – BoltClock

    +0

    поэтому нет первого дочернего селектора, основанного на классе на данный момент - спасибо за информацию. Вы действительно помогли мне с этим селектором. –

    0

    Просто используйте

    "li.subnav:first" 
    

    Если вы используете JQuery, то вы можете получить первый subnav с:

    $("li.subnav:first") 
    

    Надеется, что это помогает.

    +0

    У вас ** есть ** для использования jQuery или другой библиотеки селекторов с этим. ': first' не является селектором CSS. – BoltClock

    Смежные вопросы