我正在尝试构建一个非常简单的下拉菜单。我希望所有的li都高60px。我已经使用了一些不同的教程来下拉菜单,但我一直遇到同样的问题。我无法让'Link 1'完全清除'Drop 1'。它将清除锚点而不是李本身。
<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%;
}
答案 0 :(得分:2)
您已在此声明中设置top
属性,我将其调整为50px
,您可以see on JSFiddle。
/* level 2 list */
#nav ul {
display: none;
margin: 0;
padding: 0;
position: absolute;
top: 50px;
left: 0;
background: #f5f5f5;
}
正如pzin在评论中所提到的,您可以使用top: 100%
来减少未来的问题,以后在更改尺寸时不需要进行编辑。
答案 1 :(得分:1)
更新以下样式并添加margin-top:15px;
#nav li:hover > ul {
display: block;
margin-top: 15px;
}
答案 2 :(得分:1)
更好的解决方案是将顶部位置设置为li
元素的完整高度,因此如果您有一天更改它,则不需要稍后编辑它,因为它会自动适应:
#nav ul {
top: 100%;
[...]
}