【问题标题】:Dropdown Menu CSS下拉菜单 CSS
【发布时间】:2017-03-12 04:04:03
【问题描述】:

我无法弄清楚我的下拉菜单出了什么问题。当我越过主级别链接时,下拉菜单出现在屏幕左侧,而不是主链接下方。 我已经为此工作了几个小时,任何帮助将不胜感激。

这里是html部分:

<div class="nav">

        <ul id="menu">
           <li><a href="#" class="current">Home</a></li>
              <li><a href="#">Apetiziers</a>
              <ul>
               <li><a href="#">Sub-Link 1</a></li>
               <li><a href="#">Sub-Link 2</a></li>
               <li><a href="#">Sub-Link 3</a></li>
               <li><a href="#">Sub-Link 4</a></li>
              </ul>
              </li>

              <li><a href="#">Entree</a>
             <ul>
             <li><a href="#">Sub-Link 1</a></li>
             <li><a href="#">Sub-Link 2</a></li>
             <li><a href="#">Sub-Link 3</a></li>
             <li><a href="#">Sub-Link 4</a></li>
             </ul>
              </li>

              <li><a href="#">Main Course</a>
             <ul>
             <li><a href="#">Sub-Link 1</a></li>
             <li><a href="#">Sub-Link 2</a></li>
             <li><a href="#">Sub-Link 3</a></li>
             <li><a href="#">Sub-Link 4</a></li>
             </ul>      
              </li>

              <li><a href="#">Dessert</a>
             <ul>
              <li><a href="#">Sub-Link 1</a></li>
              <li><a href="#">Sub-Link 2</a></li>
              <li><a href="#">Sub-Link 3</a></li>
              <li><a href="#">Sub-Link 4</a></li>
             </ul>      
              </li>


              <li><a href="#">Contact Us</a></li>
        </ul>

 </div>

还有 .css :

ul#menu {
   float: left;
  margin: 0;
  width: auto;
    padding: 0px 40px 0px;
    background: #333; color: #fff;
    line-height: 100%;
}

ul#menu li {
  display: inline; 
}


/* top level link */
ul#menu a {
  float: left;
  padding: 10px 16px;
  margin-right: 0px;
  background: #789; color: #fff;
  text-decoration: none;
  border-right: 1px solid #e2e2e2;
}

/* main level link hover */
ul#menu a.current {
  background: #f60; color: #fff;
}


ul#menu li:hover > a {
  color: #fff; background: #ff4500;
  text-decoration: underline;
}

/* dropdown */
ul#menu li:hover > ul {
    display: block; /* shows the sub-menu (child ul of li) on hover */
}

/* sub level list */
ul#menu ul {
    display: none; /* hides the sub-menu until you hover over it */
    margin: 0;
    padding: 0;
    width: 140px;
    position: absolute;
    top: 35px;
    left: 0;
    background: #000;
    border: solid 1px #ccc;
}

ul#menu ul li {
    float: none;
    margin: 0;
    padding: 0;
}

ul#menu ul a {
    font-weight: normal;
    background: #9BB3BF; color: #036;
}

/* sub levels link hover */
ul#menu ul li a:hover {
color: #036; background: #DDDF99;
}

【问题讨论】:

标签: css drop-down-menu


【解决方案1】:

如果您可以随意更改 CSS 样式,为什么不考虑做这样的事情。为什么不试试这种 CSS 样式?

HTML

<ul class="nav">
    <li>
        <a href="#">Menu 1</a>
        <ul>
            <li><a href="#">Sub Menu Item</a></li>
            <li><a href="#">Sub Menu Item</a></li>
            <li><a href="#">Sub Menu Item</a></li>
        </ul>
    </li>
    <li>
        <a href="#">Menu 2</a>
        <ul>
            <li><a href="#">Sub Menu Item</a></li>
            <li><a href="#">Sub Menu Item</a></li>
            <li><a href="#">Sub Menu Item</a></li>
        </ul>
    </li>
    <li>
        <a href="#">Menu 3</a>
        <ul>
            <li><a href="#">Sub Menu Item</a></li>
            <li><a href="#">Sub Menu Item</a></li>
            <li><a href="#">Sub Menu Item</a></li>
        </ul>
    </li>
</ul>

CSS

* {font-family: "Segoe UI", Tahoma;}
ul.nav {border-bottom: 1px solid #999;}
ul.nav li a {display: block; text-decoration: none; color: #333; padding: 5px; border: 1px solid #fff;}
ul.nav > li:hover {border: 1px solid #666; border-bottom: 1px solid #fff;}
ul.nav li a:hover {background: #ccc; border: 1px solid #999;}
ul.nav > li {display: inline-block; position: relative; border: 1px solid #fff;}
ul.nav > li ul {display: none; position: absolute; left: -1px; width: 150px; border: 1px solid #666; border-top-color: #fff; margin-top: 1px;}
ul.nav > li:hover ul {display: block;}
ul.nav > li ul li {display: block;} /* Vertical Menu */
ul.nav > li ul li {display: inline-block;} /* Horizontal Menu */

小提琴:
http://jsfiddle.net/vMuxA/(垂直菜单)
http://jsfiddle.net/vMuxA/1/(水平菜单)

【讨论】:

  • @Starx 好问题。停止重新发明*。
  • @Starx 与 OP 的代码没有区别。他必须了解 CSS 并相应地应用。检查两个标记。
  • 他怎么会明白,你什么都没解释?为什么这会解决问题,他做错了什么?
  • 这里不需要使用floatposition。那么,你懂 CSS 吗?
  • 如果这是你的问题,那么没有 Praveen,我不懂 CSS。
【解决方案2】:

如果不想使用:position:relative,则使用:left:auto;,而不是:left:0; http://codepen.io/anon/pen/KAGhL 但是相对位置将很有用,并且可以设置 z-index 以将菜单保持在其他元素的顶部

【讨论】:

  • 对不起,我不确定我是否理解你的回答
  • 或者你在父
  • 和 left:0 上使用 position:relative;在子菜单上,或者只在子菜单上使用 left:auto 并在
  • 上使用 display:inline-block。如果你给:位置:相对:z-index:1;子菜单将始终显示在其他内容之上。 :)
【解决方案3】:

它可能正在跳向最近的相对容器。因此,将您的列表配置为相对容器:

ul#menu > li {
  position: relative;
}

你的锚标签中也有不必要的float,你的li已经设置为显示为inline,浮动它们没有意义

ul#menu a {
    display: inline-block;
    padding: 10px 16px;
    /* ... */
}

这里是你的fixed code

【讨论】:

  • 嗨,我试过了,但现在下拉菜单出现在最右边的主链接的右侧......
  • @wizzme,我希望你能解决剩下的问题。检查我的更新以获取修复的小提琴
【解决方案4】:

尝试清除父元素上的浮动。

【讨论】:

  • 欢迎来到 *!最好提供一个简短的 sn-p 代码来演示解决方案。谢谢!
猜你喜欢
相关资源
最近更新 更多
热门标签