我想制作如上图所示的纯CSS多级菜单。我试过一些教程,但它不适合我。菜单“xxxxx”和“yyyyy”出现在下面的CSS代码菜单“bbbbb”下面。
我想要的是3级菜单,如上图所示。
这是我的菜单HTML:
<span id="nav">
<ul>
<li><a href="#">ssss</a>
<ul>
<li><a href="#">aaaaa</a></li>
<li><a href="#">bbbbb</a>
<ul>
<li>xxxxx</li>
<li>yyyyy</li>
</ul>
</li>
</ul>
</li>
<li><a href="#">ttttt</a></li>
<li><a href="#">uuuuu</a></li>
</ul>
</span>
这是我最小化的CSS代码:
li {
list-style:none !important;
}
#nav, #nav ul {
list-style: none;
padding:0;
margin:0;
}
#nav li {
line-height:20px;
float:left;
}
#nav li ul{
display:none;
}
#nav ul li ul {
margin-top:-3em;
margin-left:7em;
}
#nav ul li:hover ul {
z-index:99999;
display:list-item !important;
position:absolute;
margin-top:2px;
margin-left:0px;
padding: 5px 15px;
background: #8ac312;
}
#nav ul li:hover ul li {
float:none;
padding: 2px 0px;
}
#nav ul li:hover ul li > a:before {
content: '» ';
}
非常感谢任何帮助,使我的CSS代码像上面的插图一样工作。感谢。
答案 0 :(得分:1)
我认为你的问题是相对而且绝对的位置。我删除你的风格并自己做(更简单,更丑陋)。代码在这里jsFiddle
代码是:
CSS:
ul { padding:0; margin:0; }
li { list-style:none; }
li > ul { display: none; }
li:hover > ul { display: block; }
.lvl1 li { margin-right: 10px; display: inline; position:relative; }
.lvl2 { position: absolute; }
.lvl2 li { position: relative; }
.lvl3 { position: absolute; top:0px; left: 50px; }
HTML:
<span id="nav">
<ul class='lvl1'>
<li><a href="#">ssss</a>
<ul class='lvl2'>
<li><a href="#">aaaaa</a></li>
<li><a href="#">bbbbb</a>
<ul class='lvl3'>
<li>xxxxx</li>
<li>yyyyy</li>
</ul>
</li>
</ul>
</li>
<li><a href="#">ttttt</a></li>
<li><a href="#">uuuuu</a></li>
</ul>
</span>
答案 1 :(得分:1)
我已经编辑了一下你的代码......请查看这个小提琴http://jsfiddle.net/kau5h/
li {
list-style:none !important;
position:relative;
}
#nav, #nav ul {
list-style: none;
padding:0;
margin:0;
}
#nav li {
line-height:20px;
float:left;
}
#nav li a {display:block;}
#nav li ul{
display:none;
z-index:99999;
/*display:list-item !important;*/
position:absolute;
/*margin-top:2px;*/
margin-left:0px;
background: #8ac312;
}
#nav li ul ul {left: 100%; top:0;}
#nav ul li ul {
/*margin-top:-3em;
margin-left:7em;*/
}
#nav ul li:hover > ul {
display: block;
}
#nav ul li:hover ul li {
float:none;
/*padding: 2px 0px;*/
}
#nav ul ul li {
padding: 5px 15px;
display: block;
}
#nav ul ul li > a:before {
/*content: '» '; */
}