纯CSS垂直菜单带有子菜单

6

我进行了调查并成功复制了我要寻找的内容,但是需要帮助实现一个更具体、纯CSS、垂直菜单。

我希望我的子菜单弹出在链接(a标签)左侧10像素,而不是像大多数在互联网上找到的例子一样弹出在 li 属性上。我也寻找最简单、纯CSS类型的菜单--没有花哨的东西。

以下是我迄今为止所做的:

<div id="nav">
    <ul class="top-level">
        <li><a href="#">This is a long text</a>
            <ul class="sub-level">
                <li><a href="#">Sub Menu Item 1</a></li>
                <li><a href="#">Sub Menu Item 2</a></li>
                <li><a href="#">Sub Menu Item 3</a></li>
                <li><a href="#">Sub Menu Item 3</a></li>
            </ul>
        </li>
        <li><a href="#">About</a></li>
        <li><a href="#">Contact me here</a></li>
        <li><a href="#">Help</a>
            <ul class="sub-level">
                <li><a href="#">Sub Menu Item 1</a></li>
                <li><a href="#">Sub Menu Item 2</a></li>
                <li><a href="#">Sub Menu Item 3</a></li>
            </ul>
        </li>
    </ul>

我的 CSS:

#nav {border:1px solid cyan;}
    /* top level menu */
    #nav ul.top-level {border:1px solid red;}
    #nav ul.top-level li {position:relative;}

    /* sub level menu */
    #nav ul.sub-level {border:1px solid yellow;}
    #nav ul.sub-level {display:none;} /* hide */

    /* hover the sub menu*/
    #nav ul.top-level li:hover .sub-level {display: block; position:absolute; top:5px;}

如何使子菜单在鼠标悬停在HTML锚点a上时弹出,而不是在li上,且相对于点击的a向左10px? 谢谢。


2
你不能仅使用CSS完成那个,你必须使用JS。虽然在CSS4中这将成为可能,但那还有很长的路要走。当鼠标悬停在li上时展开菜单也没问题,您可以使锚点与li的高度/宽度完全相同,不会有太大的区别。 - sg3s
1个回答

8

尝试这个,我认为它会有所帮助。

HTML

    <div id="nav">
    <ul class="top-level">
        <li><a href="#">This is a long text</a>
            <ul class="sub-level">
                <li><a href="#">Sub Menu Item 1</a></li>
                <li><a href="#">Sub Menu Item 2</a></li>
                <li><a href="#">Sub Menu Item 3</a></li>
                <li><a href="#">Sub Menu Item 3</a></li>
            </ul>
        </li>
        <li><a href="#">About</a></li>
        <li><a href="#">Contact me here</a></li>
        <li><a href="#">Help</a>
           <ul class="sub-level">
                <li><a href="#">Sub Menu Item 1</a></li>
                <li><a href="#">Sub Menu Item 2</a></li>
                <li><a href="#">Sub Menu Item 3</a></li>
            </ul>
        </li>
    </ul>
</div>

CSS(层叠样式表)
#nav {font-size:0.75em; width:150px;}
#nav ul {margin:0px; padding:0px;}
#nav li {list-style: none;} 

ul.top-level {background:#FFFFFF;}
ul.top-level li {
 border: #FF0000 solid; 
 border-width: 1px;
}
 #nav ul.sub-level {border:1px solid yellow;}
#nav a {
 color: #000000;
 cursor: pointer;
 display:block;
 height:25px;
 line-height: 25px;
 text-indent: 10px;
 text-decoration:none;
 width:100%;
}
#nav a:hover{
 text-decoration:underline;
}

#nav li:hover {
 background: #f90;
 position: relative;
}
ul.sub-level {
    display: none;  
}
li:hover .sub-level {
    background: #999;
    border: #fff solid;
    border-width: 1px;
    display: block;
    position: absolute;
    left: 75px;
    top: 5px;
}
ul.sub-level li {
    border: none;
    float:left;
    width:150px;
}

#nav .sub-level {
    background: #FFFFFF;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接