【问题标题】:CSS bug with drop down Menu下拉菜单的 CSS 错误
【发布时间】:2014-07-30 17:39:01
【问题描述】:

当我将鼠标悬停在画廊上时,它会显示彼此相邻的子菜单列表,但我希望 sub 1 和 2 显示在彼此下方,因此它是一个下拉菜单。我该如何改进这段代码,还有我不需要的代码。

图片如下:

HTML:

<div id="menu_wrapper">
<div id="menu">
    <ul>
        <li><a href="#" class="current">Home</a></li>
        <li><a href="#" target="_parent">Gallery</a>
            <ul>
                <li><a href="#">Sub 1</a></li>
                <li><a href="#">Sub 2</a></li>
            </ul>
        </li>
        <li><a href="#" target="_parent">Plants</a></li>
        <li><a href="#" target="_parent">News</a></li>
        <li><a href="#" class="last">Contact</a></li>
    </ul>     

    </div> <!-- end of menu -->
</div><!-- end of menu_wrapper -->

CSS

    /*
CSS
*/
#menu_wrapper {
    width: 100%;
    height: 80px;
    margin: 0 auto; 
    background: url(menu_bar.jpg) no-repeat center top;
}

#menu {
    width: 900px;
    height: 80px;
    margin: 0 auto;
    background: url(menu_bar.jpg) no-repeat center top; 
}

#menu ul {
    float: left;
    margin: 0px;
    padding: 30px 0 0 150px;
    list-style: none;
}

#menu ul li {
    padding: 0px;
    margin: 0px;
    display: inline;
}

#menu ul li a {
    position: relative;
    float: left;
    display: block;
    width: 115px;
    height: 30px;
    padding: 5px 0 0 0;
    margin-right: 10px;
    text-align: center;
    font-size: 16px;
    font-family: Georgia, "Times New Roman", Times, serif;
    text-decoration: none;
    color: #eee901; 
    font-weight: bold;
    outline: none;
    background: url(menu_item.png) no-repeat;
}

#menu li a:hover, #menu li .current {
    color: #FFF;
}

#menu ul ul {
    display:none;
    position:absolute;
    text-align:left;
    float:left;
}
#nav ul ul li {
    display:block;
}

#menu ul li:hover ul {
    display:block;
}
#menu ul li:hover ul li{
    style:none;
}

【问题讨论】:

  • StackOverflow 是一个针对特定代码问题的站点。如果您还需要帮助检查代码的质量,请考虑使用 CodeReview.StackExchange。

标签: html css drop-down-menu navigation


【解决方案1】:

用于获取您正在寻找的行为的 CSS 几乎是正确的 - 只是您似乎为您的 CSS 选择器之一编写了错误的 id。

你在哪里:

#nav ul ul li {
    display:block;
}

你应该有:

#menu ul ul li {
    display:block;
}

此样式会覆盖您在 CSS 中其他位置设置的 display:inline,并导致子菜单项堆叠。这是一个JSFiddle 来演示。希望这可以帮助!如果您有任何问题,请告诉我。

(关于代码改进...好吧,您似乎不需要在 &lt;ul&gt; 元素上指定 float:left。尽管您需要和不需要的内容可能会因更广泛的上下文而异您的网站。)

【讨论】:

  • 我怎样才能让下拉列表在它下面精确显示,因为列表有点向右移动,再次感谢
  • 当然,这只是删除子菜单锚标记上的固定宽度的问题。 #menu ul ul li a{ width:auto; } 在这种情况下解决了这个问题。
  • 好的,我改变了一些样式并改变了下拉菜单的位置。总结一下:删除了&lt;ul&gt;上的所有float:left,删除了&lt;a&gt;上的position:relative,将position:relative添加到&lt;li&gt;,并更改了子菜单的位置,因此它使用left/top而不是padding被定位。子菜单项现在位于主菜单项下方的下拉列表中。 jsfiddle.net/yZMFL/2
  • 嗯,你能模拟一个 JSFiddle 和/或提供一个截图吗?仅凭该描述进行故障排除有点困难。
  • 对啊,不过现在看起来怎么样?我只是不确定你在看什么样的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
相关资源
最近更新 更多