ネストされた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>
レベル1の「a」にカーソルを合わせると、レベル2の「ul」は表示されません。誰かが光を当ててください。明らかな何かを見逃しているかもしれません。ありがとう!
CSSセレクターを変更して、lvl2 <ul>
をターゲットにする必要があります。これは、ネストされていないためです(兄弟であるため、+を使用します)。
a.lvl1:hover + ul.lvl2 {display: block} /* The magic */
これを読む必要があります cssセレクターのリスト 。
または、アンカーの代わりにlvl1 <li>
でホバーを移動できます
li.lvl1:hover ul.lvl2 {display: block} /* The magic */