带有嵌套列表的CSS多级菜单

时间:2014-05-18 12:48:35

标签: html5 css3

css menu illustration

我想制作如上图所示的纯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代码像上面的插图一样工作。感谢。

2 个答案:

答案 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: '» '; */
}