将子菜单添加到水平菜单

时间:2012-03-26 14:09:25

标签: html css menu submenu

我正在使用cssmenumaker.com的水平菜单,其中包含子项目。我一直在尝试,但我只是不设法添加子项目。

这是我正在使用的CSS:

.menu{
border:none;
border:0px;
margin:0px;
padding:0px;
font: 67.5% "Lucida Sans Unicode", "Bitstream Vera Sans", "Trebuchet Unicode MS", "Lucida Grande", Verdana, Helvetica, sans-serif;
font-size:14px;
font-weight:bold;
}

#menu {
position:absolute;
left:250px;
top:0px;
width:750px;
height:35px;
border:0px solid #123456;
}

.menu ul{
background:#000000;
height:35px;
list-style:none;
margin:0;
padding:0;
}
.menu li{
    float:left;
    padding:0px;
    }

.menu li a{
    background:#000000 url("images/seperator.gif") bottom right no-repeat;
    color:#cccccc;
    display:block;
    font-weight:normal;
    line-height:35px;
    margin:0px;
    padding:0px 25px;
    text-align:center;
    text-decoration:none;
    }
    .menu li a:hover,
    .menu ul li:hover a{
        background: #2580a2 url("images/hover.gif") bottom center no-repeat;
        color:#FFFFFF;
        text-decoration:none;
        }
.menu li ul{
    background:#333333;
    display:none;
    height:auto;
    padding:0px;
    margin:0px;
    border:0px;
    position:absolute;
    width:125px;
    z-index:200;
    /*top:1em;
    /*left:0;*/
    }
.menu li:hover ul{
    display:block;

    }
.menu li li {
    background:url('images/sub_sep.gif') bottom left no-repeat;
    display:block;
    float:none;
    margin:0px;
    padding:0px;
    width:125px;
    }
.menu li:hover li a{
    background:none;

    }
.menu li ul a{
    display:block;
    height:35px;
    font-size:12px;
    font-style:normal;
    margin:0px;
    padding:0px 10px 0px 15px;
    text-align:left;
    }
    .menu li ul a:hover,
    .menu li ul li:hover a{
        background:#2580a2 url('images/hover_sub.gif') center left no-repeat;
        border:0px;

        color:#ffffff;
        text-decoration:none;
        }
.menu p{
    clear:left;
    }

我已经将子子菜单添加到HTML中(我相信,这是正确完成的):

<div id="menu" class="menu">
<ul>
    <li><a href="#" >item1</a></li>
    <li><a href="#">item2</a></li>
    <li><a href="#">item3</a>
        <ul>
            <li><a href="#">subitem1</a></li>
            <li><a href="#">subitem2</a></li>
            <li><a href="#">subitem3</a>
                <ul>
                    <li><a href="#">subsubitem1</a></li>
                    <li><a href="#">subsubitem2</a></li>
                </ul>
            </li>
            <li><a href="#">subitem4</a></li>
            <li><a href="#">subitem5</a></li>

        </ul>
    </li>
    <li><a href="#">item4</a></li>
    <li><a href="#">item5</a></li>
</ul>

以下是目前的情况:http://bit.ly/GRJkT5 如您所见,子项目1和2显示在子项目4和5的顶部。我应该如何编辑CSS?

提前致谢! 坦率。

3 个答案:

答案 0 :(得分:0)

您应该考虑使用>组合器。

示例:

/* instead of... */
.menu li:hover ul{
    display:block;
}
/* use... */
.menu li:hover > ul{
    display:block;
}

这将确保只有悬停元素的直接子元素会受到样式的影响。

在正确的位置使用此组合器,您的问题应该得到解决。

答案 1 :(得分:0)

你的第三级子菜单并没有真正定位,所以它只是出现在你的二级子菜单上。正确地将它相对于子菜单定位,使用子选择器显示您的第二级子菜单,如Kolink建议的那样,它应该可以正常工作,如下所示:

<强> CSS

.menu li:hover > ul{
    display:block;
}

.menu li {
    position:relative;
}

.menu ul ul ul {
    position:absolute;
    left:100%;
    top:0;
}

答案 2 :(得分:0)

好的,这里的小宝贝步骤。我添加了子子菜单的编码(稍后我会压缩代码):

.menu{
border:none;
border:0px;
margin:0px;
padding:0px;
font: 67.5% "Lucida Sans Unicode", "Bitstream Vera Sans", "Trebuchet Unicode MS", "Lucida Grande", Verdana, Helvetica, sans-serif;
font-size:14px;
font-weight:bold;
}

#menu {
position:absolute;
left:250px;
top:0px;
width:750px;
height:35px;
border:0px solid #123456;
}

.menu ul{
background:#000000;
height:35px;
list-style:none;
margin:0;
padding:0;
}

.menu li{
float:left;
padding:0px;
}

.menu li a{
background:#000000 url("images/seperator.gif") bottom right no-repeat;
color:#cccccc;
display:block;
font-weight:normal;
line-height:35px;
margin:0px;
padding:0px 25px;
text-align:center;
text-decoration:none;
}

.menu li a:hover, .menu ul li:hover a{
background: #2580a2 url("images/hover.gif") bottom center no-repeat;
color:#FFFFFF;
text-decoration:none;
}

/* --- START SUBMENU -------------------------------------------------------------- */

.menu li ul{
background:#333333;
display:none;
height:auto;
padding:0px;
margin:0px;
border:0px;
position:absolute;
width:225px;
z-index:200;
/*top:0px;*/
/*left:0px;*/
}

.menu li:hover ul{
display:block;
}

.menu li li {
background:url('images/sub_sep.gif') bottom left no-repeat;
display:block;
float:none;
margin:0px;
padding:0px;
width:225px;
}

.menu li:hover li a{
background:none;
}

.menu li ul a{
display:block;
height:35px;
font-size:12px;
font-style:normal;
margin:0px;
padding:0px 10px 0px 15px;
text-align:left;
}

.menu li ul a:hover, .menu li ul li:hover a{
background:#2580a2 url('images/hover_sub.gif') center left no-repeat;
border:0px;
color:#ffffff;
text-decoration:none;
}

 .menu p{
clear:left;
}   

/* --- START SUBSUBMENU -------------------------------------------------------------- */

.menu li ul li ul{
background:#333333;
display:none;
height:auto;
padding:0px;
margin:0px;
border:0px;
position:absolute;
width:225px;
z-index:200;
/*top:0px;*/
/*left:0px;*/
}

.menu lu ul li:hover ul{
display:block;
}

.menu li li li {
background:url('images/sub_sep.gif') bottom left no-repeat;
display:block;
float:none;
margin:0px;
padding:0px;
width:225px;
}

.menu li:hover li li a{
background:none;
}

.menu li ul li ul a{
display:block;
height:35px;
font-size:12px;
font-style:normal;
margin:0px;
padding:0px 10px 0px 15px;
text-align:left;
}

.menu li ul li ul a:hover, .menu li ul li ul li:hover a{
background:#2580a2 url('images/hover_sub.gif') center left no-repeat;
border:0px;
color:#ffffff;
text-decoration:none;
}   

结果在这里:http://bit.ly/Hl9SwM 当鼠标悬停在菜单2上时,子菜单(2.4.1等)会直接显示,并且它们的位置不正确(应位于子菜单2.4的右侧)。我怎么能改变它?

谢谢!