Наведите курсор на один элемент и измените другой (без использования Javascript)

#css #hover

#css #наведите курсор

Вопрос:

У меня есть вложенное меню CSS, в котором я не могу открыть подменю.

Я разобрал код из списка отдельно. Пример на этом сайте работает отлично, но поскольку на моей странице есть 2 навигационных меню CSS, я должен поместить свои HTML-элементы в разные классы CSS.

Вот мой код:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 

"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <style type="text/css">
    ul#lvl1 {
        margin:0;
        padding:0;
        list-style:none;
        width:150px; /* Width of Menu Items */
        border-bottom:1px solid #ccc;
    }
    li.lvl1 {position:relative}
    ul.lvl2 {
        position: absolute;
        left: 149px; /* Set 1px less than menu width */
        top: 0;
        display: none;
    }
    /* Styles for Menu Items */
    li.lvl1 > a {
      display: block;
        text-decoration: none;
        color: #777;
        background: #fff; /* IE6 Bug */
        padding: 5px;
        border: 1px solid #ccc;
        border-bottom: 0;
    }
    /* Fix IE. Hide from IE Mac */
    *  html.lvl1 > ul > li {float:left;height:1%}
    *  html.lvl1 > ul > li > a {height:1%}
    /* End */
    li.lvl2 > a:hover { color: #E2144A; background: #f9f9f9; } /* Hover Styles */
    li.lvl2 > a { padding: 2px 5px; } /* Sub Menu Styles */
    a.lvl1:hover ul.lvl2 {display: block} /* The magic */
  </style>
</head>
<body>
  <ul id="lvl1">
    <li class="lvl1">
      <a class="lvl1" href="#">item1</a>
      <ul class="lvl2">
        <li class="lvl2">
          <a class="lvl2" href="#">subitem1</a>
        </li>
      </ul>
    </li>
    <li class="lvl1">
      <a class="lvl1" href="#">item2</a>
      <ul class="lvl2">
        <li class="lvl2">
          <a class="lvl2" href="#">subitem2</a>
        </li>
      </ul>
    </li>
  </ul>
</body>
</html>
  

Теперь, когда я наведу курсор на «a» на уровне 1, «ul» на уровне 2 не появится. Может кто-нибудь, пожалуйста, пролить свет? Возможно, я упускаю что-то очевидное. Спасибо!

Ответ №1:

Вы должны изменить свой селектор CSS, чтобы настроить таргетинг на lvl2 <ul> , поскольку он больше не является вложенным (это родной брат, поэтому используйте ).

 a.lvl1:hover   ul.lvl2 {display: block} /* The magic */
  

Вы должны прочитать этот
список селекторов css
.

Или вы могли бы переместить указатель мыши на lvl1 <li> вместо привязки

 li.lvl1:hover ul.lvl2 {display: block} /* The magic */
  

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

1. Поддержка просмотра для таких селекторов варьируется. Если вам нужно поддерживать ie6, не делайте этого.

2. жаль того, кому все еще нужно поддерживать ie6!