我有这个 HTML 代码:
<nav id="menu">
<ul>
<li>
<a href="#">Item1</a>
<a href="#" class="alt">Item1</a>
</li>
<li>
<a href="#">Item2</a>
<a href="#" class="alt">Item2</a>
</li>
</ul>
</nav>
如您所见,这是一个菜单,每个项目都有 2 个链接。菜单是水平的,目的是在项目未悬停时隐藏“alt”链接,并在悬停时显示它。
因此,每个<li>
元素都是一个具有特定高度(34px)的框,每个链接的高度也是 34px,因此“alt”链接位于主链接下方,并且被隐藏。
当项目悬停时,34px 的负上边距应用于主链接,使“alt”出现。
但是当“悬停”时,谷歌浏览器并没有真正应用 0 的上边距,您可以在我制作的演示页面上注意到。只需在链接上悬停几次,您就会注意到元素没有放回正确的位置。
我该如何解决?出于更复杂的原因,我需要保留 2 个链接(主要和“alt”),演示被简化。
供您参考,这里是 CSS:
nav#menu {
background-color: #e9e9e9;
}
nav#menu > ul {
margin: 0;
height: 39px;
display: block;
list-style-type: none;
}
nav#menu > ul > li {
display: inline-block;
height: 34px;
overflow: hidden;
width: 200px;
}
nav#menu > ul > li > a {
display: block;
height: 34px;
line-height: 34px;
}
nav#menu > ul > li > a:first-child {
margin-top: 0;
}
nav#menu > ul > li:hover > a:first-child {
margin-top: -34px;
}
nav#menu > ul > li > a.alt {
color: white;
background-color: #8d8d8d;
}