我有一个嵌套的CSS菜单,我不能得到子菜单上来。
我从A list apart的代码。该网站的示例工作完美,但由于我有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>
现在当我将鼠标悬停在第1级的“a”上时,第2级的“ul”不会出现。有人可以请一些光吗?我可能缺少一些明显的东西。谢谢!
解决方法
您必须更改CSS选择器以定位lvl2< ul>,因为它不再嵌套(它是一个兄弟,所以使用)。
- a.lvl1:hover + ul.lvl2 {display: block} /* The magic */
你应该读这个
list of css selectors。
或者,您可以在lvl1< li>上移动悬停,而不是锚点
- li.lvl1:hover ul.lvl2 {display: block} /* The magic */