带有悬停子菜单的固定菜单有点关闭

Posted

技术标签:

【中文标题】带有悬停子菜单的固定菜单有点关闭【英文标题】:Fixed menu with hover submenu a bit off 【发布时间】:2013-11-30 19:31:13 【问题描述】:

我正在开发一个具有水平菜单的导航栏。在菜单的最后一个元素(选择用户类型)上,当用户将鼠标悬停在子菜单上时,我想包含一个子菜单。将鼠标悬停在相应项目上时,我设法显示了一个子菜单,但它一直在左侧,而不是在项目的右侧。

我包含以下代码: html

<nav class="navbar">
  <ul id="menu">
      <li>Link 1</li>
      <li>Link 2</li>
      <li>Link 3</li>
      <li id="dropdown">Select User Type
          <ul>
              <li>Link 1</li>
              <li>Link 2</li>
          </ul>
      </li>
  </ul>
</nav>

CSS:

.navbar 
  position:fixed;
  top:0;
  left:0;
  width:100%;
  height:30px;
  background-color: black;
  color:#fff;

#menu 
  margin: 0;
  padding: 0;
  list-style-type: none;
  text-align: center;

#menu li 
  display: inline;
  height:30px;
  padding:0 15px;
  color:#F5F5F5;
  line-height:30px;
  cursor:pointer;

#menu li:hover 
  background-color:#F5F5F5;
  color:black;

#menu li ul 
  display: none;
  width: 10em;
  /* Width to help Opera out */
 background-color: #69f;

#menu li:hover ul, #navbar li.hover ul 
  display: block;
  position: absolute;
  margin: 0;
  padding: 0;

#menu li:hover li, #navbar li.hover li 
  float: none;
  background-color: #69f;
  border-bottom: 1px solid #fff;
  color: #000;

这里还有一个 jsFiddle 链接:http://jsfiddle.net/ZT6Pq/

谢谢!!

【问题讨论】:

【参考方案1】:

更新jsFiddle

我所做的只是将主 li 位置更改为“相对”,将子菜单位置更改为“绝对”。这会导致子菜单相对于其父 li 项目定位。

#menu li 
    display: inline;
    height:30px;
    padding:0 15px;
    color:#F5F5F5;
    line-height:30px;
    cursor:pointer;
    position: relative; /* New */


#menu li:hover ul, #navbar li.hover ul 
    display: block;
    position: absolute;  /* New */
    top: 24px;  /* New */
    left: 0;    /* New */
    margin: 0;
    padding: 0;

【讨论】:

【参考方案2】:

添加到您的#menu li:

position: relative;

并将顶部和左侧添加到您的#menu li:hover ul、#navbar li.hover ul

top:25px;
left:0;

这里是小提琴:http://jsfiddle.net/ZT6Pq/1/

【讨论】:

以上是关于带有悬停子菜单的固定菜单有点关闭的主要内容,如果未能解决你的问题,请参考以下文章

悬停时的Jquery动画子菜单不流畅

带有悬停垂直子菜单的 CSS 水平菜单

在带有子菜单的菜单上需要有关 JQuery 鼠标悬停的帮助

带有水平子菜单的纯 html css 菜单。悬停在 IE 中无法正常工作

将鼠标悬停在一个带有子菜单的引导子菜单项上会重新排列父列表项

多级子菜单不会在点击时关闭子菜单