html - 下拉菜单中的子级别相互堆叠而不是垂直显示

标签 html css

最近几个月前,我不得不将子级别功能添加到我们网站之一的下拉菜单中。我之前采用的策略对于导航中的一列效果很好,但我被要求在它之前的列中添加一个子级别,这不起作用,因为我使用的是相对定位(请参见下面的示例):

<style type="text/css">
#div#mycontent { overflow: visible; }
#nav ul { font-family: Arial, Verdana; font-size: 10px; margin: 0; padding: 0; list-style: none; font-weight: bold; }
#nav ul li { display: block; float: left; margin: 0;}
#nav li ul { display: none; }
#nav ul li a { display: block; text-decoration: none; color: #3c1c4e; border-top: 1px solid #ffffff; padding: 5px 15px 5px 15px; background: #f0e8d8; margin-left: 1px; white-space: nowrap; }
#nav ul li a:hover { background: #f0e8d8; }
#nav li:hover ul { display: block; position: absolute; }
#nav li:hover li { float: none; font-size: 11px; }
#nav li:hover a { background: #f0e8d8; }
#nav li:hover li a:hover { background: #fff7e7; }

/* 这用于下拉列表中的子级别 */ #nav li:hover ul li ul {显示:无} #nav li ul li:hover ul { 显示: block ; } #nav li ul li ul li { position:relative;左:188px;底部:25px ;padding-left:1px }

所以我修改了下拉菜单中的子级别以使用重叠方法的相对定位(由于以前的编码器最初设计下拉菜单的方式)。新代码如下所示:

#nav li ul li ul li { position: absolute; left: 125px; bottom: 0px; border-style: solid; border-width: 1px; border-color:purple; z-index: 1; }

然而,正如标题所示,无序列表下的 LI 现在正在彼此堆叠。而不是一个接一个地垂直显示。我相信它需要我清除 float ,但看起来它是在上面完成的。所以我不确定是否需要重新定义 float 然后清除它以确保子列表中的链接将垂直显示。

编辑:

添加 HTML 以显示我如何尝试执行此操作的好主意:

<html>
<head>
<style type="text/css">
#div#mycontent { overflow: visible; }
#nav ul { font-family: Arial, Verdana; font-size: 10px; margin: 0; padding: 0; list-style: none; font-weight: bold; }
#nav ul li { display: block; float: left; margin: 0;}
#nav li ul { display: none; }
#nav ul li a { display: block; text-decoration: none; color: #3c1c4e; border-top: 1px solid #ffffff; padding: 5px 15px 5px 15px; background: #f0e8d8; margin-left: 1px; white-space: nowrap; }
#nav ul li a:hover { background: #f0e8d8; }
#nav li:hover ul { display: block; position: absolute; z-index: 0;}
#nav li:hover li { float: none; font-size: 11px; }
#nav li:hover a { background: #f0e8d8; }
#nav li:hover li a:hover { background: #fff7e7; }
/* This is for sublevels in the drop down */
#nav li:hover ul li ul {display: none}
#nav li ul li:hover ul { display: block; }
#nav li ul li ul li { position: absolute; left: 125px; bottom: 0px; border-style: solid; border-width: 1px; border-color:purple; z-index: 1; }
</style>
</head>
<body>
<div id="nav">
<ul id="menu">
    <li><a href="#">Column 1</a>
        <ul>
            <li><a href="#">Link 1</a></li>
            <li><a href="#">Link 2</a></li>
        </ul>
    </li>
    <li> <a href="#">Column 2</a>
        <ul>
            <li><a href="#">Link 1</a></li>
            <li><a href="#">Link 2</a></li>
        </ul>
    </li>
    <li><a href="#">Column 3</a><li>
</ul>
</div>
</body>
</html>

最佳答案

在下拉列表中为您的子级别尝试这些 CSS 规则:

/* This is for sublevels in the drop down */
     #nav li:hover ul li ul {
        display: none
    }
    #nav li ul li:hover ul {
        display: block;
        position:absolute;
        top:0;
        left:100%;
    }
    #nav li ul li ul li {
        position:relative;
        display: block;
        float: left;
        border: 1px solid purple;
        z-index: 1;
    }

关于html - 下拉菜单中的子级别相互堆叠而不是垂直显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16673831/

相关文章:

jQuery - 仅将方法应用于一页

javascript - 使用父函数中的事件在子元素中聚合触发函数

html - 我必须将页眉的宽度设置为大于主体才能完全覆盖。为什么?

css - SharePoint 页面布局比例不同

jquery - R DT 数据表 - 隐藏或格式化过滤器 Pane

html - 使用 CSS 根据屏幕大小制作一个 HTML 表格的元素是方形的?

javascript - JQuery:如何使两个文本输入互相影响?

html - 如何以响应式设计方式使我的 div 居中?

javascript - 如何从日期开始用逗号替换正斜杠

html - Bootstrap 跨越空白区域