我有一个导航菜单,我想要一个子页面的下拉菜单。我创建了它,一切都很好,只是当我将页面链接与子页面悬停时,下拉列表显示顶部菜单中的页面链接向右滑动。 我在这里失踪的是什么? 感谢您的帮助。
这是jsfiddle: jsfiddle.net/AC8XK /
我所拥有的并不是100%那样,因为有很多缺失,但它确实显示了我提到的问题。
我设法让菜单正常运行。正如迈克所说,最初问题的解决方案是将下拉 ul位置从相对更改为绝对。
至于下拉列表的定位,我使用 padding-top 代替 top 或 margin-top
感谢所有试图提供帮助的人。
答案 0 :(得分:2)
你在jsfiddle中提供的代码是......还有点混乱。我不得不将其删除很多并为下拉列表生成一些基本格式。我将评论重要的位,但它应该或多或少地复制&糊。代码完全菜单的布局文本 - 没有视觉或位置样式的东西。
主要概念:1 - 将您的LI设置为width:auto
,将li> ul设置为position: absolute;width:100%
。这允许定位并确保各个ul ul li
在不同的行上。
2-您的display:none
和display:block
正确无误。或者,您可以使用屏幕外定位来实现相同目的。
3-请记住ul ul {position:absolute;}
允许相对于父li
定位子菜单!
HTML:
<div class="greenbar">
<nav>
<ul id="menu-navigation-menu" class="navigation">
<li id="menu-item-107" class="menu-item"><a href="#">About</a>
<ul class="sub-menu">
<li id="menu-item-116" class="menu-item"><a href="#">Terms of Use</a></li>
<li id="menu-item-119" class="menu-item"><a href="#">Just another link</a></li>
</ul>
</li>
<li id="menu-item-106" class="menu-item"><a href="#">Services</a>
<ul class="sub-menu">
<li id="menu-item-120" class="menu-item"><a href="#">Another link again</a></li>
</ul>
</li>
<li id="menu-item-105" class="menu-item"><a href="#">Clients</a></li>
<li id="menu-item-104" class="menu-item"><a href="#">Resources</a></li>
</ul>
</nav>
</div>
CSS:
nav ul {
list-style-type: none;
position: relative;
display: inline-table;
}
nav ul li {float: left;}
nav ul li a { display: block; text-decoration: none;}
nav ul ul {
display: none;
position: absolute;
width: auto;
}
nav ul li:hover > ul { display: block;}
nav ul ul li { width: 100%;}