导航项目上的背景图像位置

时间:2013-11-06 20:27:42

标签: html css hover background-image

不太清楚我在这里做错了什么。我发誓过去我有这个工作,但出于某种原因,当你将鼠标悬停在导航项目上时,我无法显示背景图片。

我尝试添加宽度,但这似乎不起作用。这只会让各种各样的人疯狂。

这是当前的CSS:

.nav ul li {
    display: inline-block;
    margin-left: 15px;
}

.nav ul li a {
    text-decoration: none;
    color: #760706;
    display: block;
    position: relative;
}

.nav ul li a:hover {
    background: url(imgs/ornament.png) -10px 2px no-repeat;
}

但这是你悬停时的当前结果:

enter image description here

如果我增加锚元素的宽度并将其更改为inline-block,则只会增加导航的宽度:

CSS:

.nav {
float: right;
font: 1.2rem "rosewoodfill", Georgia, "Times New Roman", Times, serif;
margin-top: 35px; 
}

.nav ul li {
display: inline-block;
margin-left: 15px; 
}

.nav ul li a {
  text-decoration: none;
  color: #760706;
  display: inline-block;
  position: relative;
  width: 150px;
}

  .nav ul li a:hover {
    background: url(imgs/ornament.png) -10px 2px no-repeat;
}

结果:

enter image description here

不确定我是否遗漏了什么或什么。

我创建了一支笔来帮助说明我正在尝试做什么:

http://codepen.io/ultraloveninja/pen/GfAuI

2 个答案:

答案 0 :(得分:1)

我认为问题在于背景的位置。

.nav ul li a:hover {
   background: url(imgs/ornament.png) -10px 2px no-repeat;
}

-10px表示背景位置在x轴上为-10像素,在y轴上位于2像素处。因此,如果您的图像宽度为10px,那么当它被向左拉10px时,您将无法看到它。如果将代码设置为:

.nav ul li a:hover {
   background: url(imgs/ornament.png) 0 2px no-repeat;
}

图像将在悬停时显示在锚标记的最左侧,并将放置2px。然后,您可以在锚点的左侧添加一些填充,以便文本不会覆盖图像(假设您想要这样)。

.nav ul li a {
   text-decoration: none;
   color: #760706;
   display: inline-block;
   padding-left: 15px;
   position: relative;
   width: 135px;
}

.nav ul li a:hover {
   background: url(imgs/ornament.png) 0 2px no-repeat;
 }

答案 1 :(得分:0)

由于您使用的是内联块元素,因此无法将背景图像扩展到内容之外。但是,如果你使用伪选择器:before,你可以使它像这样工作:

.nav ul li a:before {
    content: "."; /*You have to have some sort of content for this to work.*/
    display: inline-block;
    width: 15px;
    color: #fff /*This should match your background color so that you can't see it*/
}

.nav ul li a:hover:before {
    background:url(img/url) 0 2px no-repeat;
}

这将提供图像显示的空间。然后,当您将鼠标悬停在项目上时,它将显示出来。

您必须拥有之前的内容才能发挥作用。一段时间很短。如果您将颜色设置为与其所在的背景颜色相同,那么您将无法看到它。