html - 删除 li 和 li :hover background images 上的多余空间

标签 html css

我使用背景图片和悬停效果创建了一个导航栏。我正在尝试学习如何在网站上正确实现它们。

我已经设计了 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>

演示:http://tinyurl.com/cqus3fb

近 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;

原因是在背景的速记声明中,您将背景位置设置为 righttop,而所有其他规则都设置为 00。所以基本上你的背景是从右边而不是左边定位的,因为 a 是 190px 宽,图像是 180px 宽,所以看起来有 10px 的差距。

关于html - 删除 li 和 li :hover background images 上的多余空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13650770/

相关文章:

javascript - 未计算 div 的外部高度

css - Internet Explorer 字体 ssl

css - 正文即使在缩放时也能填满整个页面

html - 响应式 Html 电子邮件模板

html - 如何在不改变边框颜色的情况下改变边框的不透明度

html - inline-block CSS 属性的对齐问题

html - 想要用图像填充缩略图容器,使用 ng-repeat Angularjs

html - 将垂直类别菜单变成手机上的下拉菜单

javascript - onClick 过渡并切换 div 元素的可见性

html - 悬停在另一个 div 上时 CSS 更改 div