我使用背景图片和悬停效果创建了一个导航栏。我正在尝试学习如何在网站上正确实现它们。
我已经设计了 90% 的导航,但我遇到的问题是,当我将鼠标悬停在其中一个元素上时,悬停图像不会与原始图像重叠并产生额外的空间。
CSS:
#bg {
background-color: #EAEAEA;
width: 761px;
}
#menu {
background-color: #EAEAEA;
height: 58px;
list-style-type: none;
padding-left: 1px;
}
#menu li.first a {
background: url("../images/top_nav_f.png") no-repeat scroll 0 0 transparent;
height: 180px;
}
#menu li a {
background: url("../images/top_nav_f.png") no-repeat scroll 0 0 transparent;
float: left;
width: 190px;
height: 180px;
}
#menu li.first a:hover {
background: url("../images/menu_hover_f.png") no-repeat scroll 0 0 transparent;
}
#menu li a:hover {
background: url("../images/menu_hover.png") no-repeat scroll right top transparent;
color: #FFFFFF;
height: 58px;
}
#menu li.last a {
background: url("../images/top_nav_n.png") no-repeat scroll 0 0 transparent;
}
#menu li.last a:hover {
background: url("../images/menu_hover_r.png") no-repeat scroll 0 0 transparent;
}
.bar {
margin-right: 38px;
padding-top: 5px;
text-align: center;
}
.n1, .n2 {
color: #333333;
}
HTML :
<nav id="bg">
<ul id="menu">
<li class="first">
<a href="">
<div class="bar">
<div class="n2">Link 1 </div>
</div>
</a>
</li>
<li><a class="" href="">
<div class="bar">
<div class="n2">link 2 </div>
</div>
</a>
</li>
<li><a class="" href="">
<div class="bar">
<div class="n2">link 3 </div>
</div>
</a>
</li>
<li class="last"><a href="">
<div class="bar">
<div class="n2">link 4 </div>
</div>
</a>
</li>
</ul>
</nav>
近 3 天以来,我一直在努力让它发挥作用!
最佳答案
问题在于下面的 #menu li a:hover
规则:
#menu li a:hover {
background: url("../images/menu_hover.png") no-repeat scroll right top transparent;
color: #FFFFFF;
height: 58px;
}
您需要将后台规则更改为:
background: url("../images/menu_hover.png") no-repeat scroll 0 0 transparent;
原因是在背景的速记声明中,您将背景位置设置为 right
和 top
,而所有其他规则都设置为 0
和 0
。所以基本上你的背景是从右边而不是左边定位的,因为 a
是 190px 宽,图像是 180px 宽,所以看起来有 10px 的差距。
关于html - 删除 li 和 li :hover background images 上的多余空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13650770/