不太清楚我在这里做错了什么。我发誓过去我有这个工作,但出于某种原因,当你将鼠标悬停在导航项目上时,我无法显示背景图片。
我尝试添加宽度,但这似乎不起作用。这只会让各种各样的人疯狂。
这是当前的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;
}
但这是你悬停时的当前结果:
如果我增加锚元素的宽度并将其更改为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;
}
结果:
不确定我是否遗漏了什么或什么。
我创建了一支笔来帮助说明我正在尝试做什么:
答案 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;
}
这将提供图像显示的空间。然后,当您将鼠标悬停在项目上时,它将显示出来。
您必须拥有之前的内容才能发挥作用。一段时间很短。如果您将颜色设置为与其所在的背景颜色相同,那么您将无法看到它。