1

我正在尝试构建一个非常简单的下拉菜单。我希望所有 li 的高度都为 60 像素。我已经为下拉菜单使用了一些不同的教程,但我一直遇到同样的问题。我无法让“Link 1”完全清除“Drop 1”。它会清除锚点,但不会清除 li 本身。

http://jsfiddle.net/ZFWBU/12/

    <nav>

    <ul id="nav">

        <li><a href="#">Drop 1</a>

            <ul>
                <li><a href="#">Link 1</a></li>
                <li><a href="#">Link 2</a></li>
                <li><a href="#">Link 3</a></li>
            </ul>

        </li>

        <li><a href="#">Drop 2</a>
            <ul>
                <li><a href="#">Link 1</a></li>
                <li><a href="#">Link 2</a></li>
                <li><a href="#">Link 3</a></li>
            </ul>
        </li>

    </ul>

</nav>

CSS:

a {
    color: #333;
}

nav {
    width: 992px;
    height: 50px;
    margin: 0 auto;

    border: 1px solid #ebebeb;
    background: red;
}

#nav {
    width: 992px;
    margin: 0 auto;
    line-height: 100%;

}

#nav li {
    float: left;
    position: relative;
    list-style: none;
}


/* main level link */
#nav a {
    width: 280px;
    font-weight: bold;
    color: #e7e5e5;
    text-decoration: none;
    display: block;
    padding:  16px 20px;
    margin: 0;

    border: 1px solid white;
}

/* main level link hover */
#nav .current a, #nav li:hover > a {
    background: blue;
}

/* level 2 list */
#nav ul {
    display: none;
    margin: 0;
    padding: 0;
    position: absolute;
    top: 35px;
    left: 0;

    background: #f5f5f5;
}

/* dropdown */
#nav li:hover > ul {
    display: block;
}

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

#nav ul a {
    font-weight: normal;
}

/* clearfix */
#nav:after {
    content: "";
    display: block;
    clear: both;
    visibility: hidden;
    line-height: 0;
    height: 0;
}

#nav {
    display: inline-block;
}

html[xmlns] #nav {
    display: block;
}

* html #nav {
    height: 1%;
}
4

3 回答 3

2

您已经top在此声明中设置了属性,我将其调整为50px您可以在 JSFiddle 上看到的

/* level 2 list */
#nav ul {
    display: none;
    margin: 0;
    padding: 0;
    position: absolute;
    top: 50px;
    left: 0;
    background: #f5f5f5;
}

正如评论中 pzin 所提到的,您可以通过使用来减少未来的问题,top: 100%当您更改大小时,将来不需要对其进行编辑。

于 2013-04-10T07:11:29.723 回答
1

更新以下样式并添加margin-top:15px;

#nav li:hover > ul {
    display: block;
    margin-top: 15px;
}
于 2013-04-10T07:10:00.480 回答
1

更好的解决方案是将顶部位置设置为li元素的完整高度,因此如果有一天您更改它,您以后不需要编辑它,因为它会自动适应自己:

#nav ul {
  top: 100%;
  [...]
}
于 2013-04-10T07:13:19.570 回答