Первый дочерний селектор CSS не работает должным образом

#css #css-selectors

#css #css-селекторы

Вопрос:

Вот мой HTML:

 <header id="banner" class="body">
    <h1><a href="#">New UGS Project! <br><strong>This is the sub-title</strong></a></h1>

    <nav><ul>
        <li><a href="#">home</a></li>
        <li><a href="#">portfolio</a></li>
        <li><a href="#">blog</a></li>
        <li><a href="#">contact</a></li>
    </ul></nav>

</header><!-- /#banner -->
  

И мой CSS:

 #banner nav a:first-child:hover{
    -moz-border-radius-topleft: 8px;
    -webkit-border-top-left-radius: 8px;
    -moz-border-radius-bottomleft: 8px; 
    -webkit-border-bottom-left-radius: 8px;
}
  

Я хотел бы выбрать ТОЛЬКО первую ссылку, «home», чтобы применить радиус границы. Я борюсь с этим селектором CSS3…

Комментарии:

1. :first-child не является селектором CSS3.

2. a является первым дочерним элементом для всех lis.

Ответ №1:

Каждый a заключен в li элемент, поэтому a всегда является первым (и последним) дочерним элементом своего родителя li . Вы должны выбрать первый li из его родительского ul элемента. Некоторые примеры селекторов:

 #banner nav li:first-child a:hover {
#banner nav li:first-child:hover a {
#banner nav li:first-child:hover {
  

Ответ №2:

То, что вы ищете, это:

 #banner nav li:first-child a:hover {
    -moz-border-radius-topleft: 8px;
    -webkit-border-top-left-radius: 8px;
    -moz-border-radius-bottomleft: 8px; 
    -webkit-border-bottom-left-radius: 8px;
}
  

Ответ №3:

a не имеет first-child . li работает.

 #banner nav ul > li a:first-child:hover{
    -moz-border-radius-topleft: 8px;
    -webkit-border-top-left-radius: 8px;
    -moz-border-radius-bottomleft: 8px; 
    -webkit-border-bottom-left-radius: 8px;
}
  

Комментарии:

1.Но каждый из них a является первым дочерним элементом. li:first-child также не означает первого дочернего элемента li ; вы применяете радиус границы к li здесь, что не совсем правильно.