【问题标题】:CSS Navigation menu slides to right when hovering悬停时CSS导航菜单向右滑动
【发布时间】:2013-07-19 07:56:29
【问题描述】:

我有一个导航菜单,我想要一个用于子页面的下拉菜单。我创建了它,一切都很好,除了当我将页面链接与子页面悬停时,当下拉菜单显示时,顶部菜单中的页面链接滑到右侧。 我在这里想念什么? 提前感谢您的帮助。


这里是 jsfiddle: jsfiddle.net/AC8XK/

我所拥有的并不是 100% 那样,因为有很多遗漏,但它恰好显示了我提到的问题。


我设法让菜单正常工作。正如迈克所说,最初问题的解决方案是将下拉 ul 位置relative 更改为 absolute

关于下拉菜单的定位,我用padding-top代替topmargin-top解决了这个问题>.

感谢所有尝试提供帮助的人。

【问题讨论】:

  • 你需要显示一些代码,这样我们才能看到发生了什么。
  • 贴一些代码作为例子。我有一种预感,您正在错误地显示列表项(假设您使用列表进行导航),因此顶级项必须移动以为子项腾出水平空间,即使它们不会正常重叠
  • +1 发布代码或更好,做一个 jsfiddle

标签: css menu hover


【解决方案1】:

您在 jsfiddle 中提供的代码是……嗯……有点乱。我不得不剥离很多内容并为下拉菜单生成一些基本格式。我将评论重要的部分,但它应该或多或少地复制和粘贴。代码仅是菜单的布局文本 - 没有视觉或位置样式。

关键概念: 1 - 将您的 LI 设置为 width:auto,将 li>ul 设置为 position: absolute;width:100%。这允许定位并确保各个ul ul lis 位于不同的行上。 2-您的display:nonedisplay: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%;}

【讨论】:

  • 这应该是问题所在。我有绝对位置,但下拉菜单会显示在导航菜单上方的某个位置(菜单不在顶部),所以我将其更改为相对位置,这允许下拉菜单显示在页面链接下方。所以,我必须把它改回绝对,但是我如何让它显示在链接下面呢?使用边距?
  • 我将其更改为绝对并设法将其放置在我想要的位置,但现在我无法悬停下拉菜单,因为当我试图悬停它时它会消失。你知道为什么会这样吗?
  • 我不确定是什么问题。我在你的 jsfiddle 中添加了position: absolute;,并调整了 ul ul 的位置,效果很好。也许您可以在原始问题中添加实际代码?
  • 感谢您的回复。检查更新的小提琴:jsfiddle.net/AC8XK/1/ 我将位置更改为绝对位置并根据自己的喜好调整位置。当您悬停“关于”链接并尝试转到下拉菜单时,它会消失。 PS:我添加了margin-top:5px;在那里让它看起来更好。在该站点中,它有一个灰色条,因此大致相同。
  • @AlexAlexandre 你是要严格使用 javascript 还是可以使用 jquery?
猜你喜欢
  • 2015-07-22
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-06
  • 2012-10-07
  • 1970-01-01
  • 2012-01-23
相关资源
最近更新 更多