css – 悬停一个元素,并更改另一个(不使用Javascript)

前端之家收集整理的这篇文章主要介绍了css – 悬停一个元素,并更改另一个(不使用Javascript)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个嵌套的CSS菜单,我不能得到子菜单上来。

我从A list apart代码。该网站的示例工作完美,但由于我有2个CSS导航菜单在我的页面上,我必须把我的HTML元素在不同的CSS类。

这里是我的代码

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  2.  
  3. "http://www.w3.org/TR/html4/strict.dtd">
  4. <html>
  5. <head>
  6. <style type="text/css">
  7. ul#lvl1 {
  8. margin:0;
  9. padding:0;
  10. list-style:none;
  11. width:150px; /* Width of Menu Items */
  12. border-bottom:1px solid #ccc;
  13. }
  14. li.lvl1 {position:relative}
  15. ul.lvl2 {
  16. position: absolute;
  17. left: 149px; /* Set 1px less than menu width */
  18. top: 0;
  19. display: none;
  20. }
  21. /* Styles for Menu Items */
  22. li.lvl1 > a {
  23. display: block;
  24. text-decoration: none;
  25. color: #777;
  26. background: #fff; /* IE6 Bug */
  27. padding: 5px;
  28. border: 1px solid #ccc;
  29. border-bottom: 0;
  30. }
  31. /* Fix IE. Hide from IE Mac \*/
  32. * html.lvl1 > ul > li {float:left;height:1%}
  33. * html.lvl1 > ul > li > a {height:1%}
  34. /* End */
  35. li.lvl2 > a:hover { color: #E2144A; background: #f9f9f9; } /* Hover Styles */
  36. li.lvl2 > a { padding: 2px 5px; } /* Sub Menu Styles */
  37. a.lvl1:hover ul.lvl2 {display: block} /* The magic */
  38. </style>
  39. </head>
  40. <body>
  41. <ul id="lvl1">
  42. <li class="lvl1">
  43. <a class="lvl1" href="#">item1</a>
  44. <ul class="lvl2">
  45. <li class="lvl2">
  46. <a class="lvl2" href="#">subitem1</a>
  47. </li>
  48. </ul>
  49. </li>
  50. <li class="lvl1">
  51. <a class="lvl1" href="#">item2</a>
  52. <ul class="lvl2">
  53. <li class="lvl2">
  54. <a class="lvl2" href="#">subitem2</a>
  55. </li>
  56. </ul>
  57. </li>
  58. </ul>
  59. </body>
  60. </html>

现在当我将鼠标悬停在第1级的“a”上时,第2级的“ul”不会出现。有人可以请一些光吗?我可能缺少一些明显的东西。谢谢!

解决方法

您必须更改CSS选择器以定位lvl2< ul&gt,因为它不再嵌套(它是一个兄弟,所以使用)。
  1. a.lvl1:hover + ul.lvl2 {display: block} /* The magic */

你应该读这个
list of css selectors

或者,您可以在lvl1< li>上移动悬停,而不是锚点

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

猜你在找的CSS相关文章