更改背景位置时背景图像会消失吗?

时间:2013-10-07 01:29:01

标签: javascript html css mouseover

好的,我有一个链接列表,如此

<ul>
    <li>item1</li>
    <li>item2</li>
    <li>item3</li>
</ul>

我有一个340x40(340是长度)图像,当我将鼠标悬停在列表项上时,我希望它出现在列表项下方。所以我试过的是这个

li:hover {
    background: url(../images/liHover.png);
}

执行此操作时,图像显示在列表项目的顶部,而不是在其下方。所以我尝试添加

background-position: 0px 5px;
repeat: no-repeat;

这给了一个问题。好像悬停在物品上方后出现的图像位于340x40的假想容器中。当我告诉它使用背景位置向下移动5px时,就好像图像向下移动,除了图像所在的容器没有向下移动。我只能看到图像,如果它在假想的容器内,并且假想的容器向下不向下移动5px,图像确实如此,所以5px的图像消失了。我删除了

repeat: no-repeat;

现在,当我使用CSS中的背景位置向下移动图像5px时,图像的另一个版本开始出现。所以现在我可以看到新图像的底部5px和旧图像的顶部335px。为什么会发生这种情况,我该如何解决?

3 个答案:

答案 0 :(得分:1)

它被称为CSS精灵。为了减少在页面上加载图像所需的HTTP请求的数量,所有图像被组合成单个图像。为了在单个图像中显示图像,每个元素的宽度和高度(例如li)充当视口,而background-position确定单个图像的位置,就好像它是背景,只有元素中图像的宽度和高度可见。

我建议您阅读a tutorial on CSS Sprites,以便更好地理解这个概念。

答案 1 :(得分:1)

OP这就是你要找的你只需要添加height这里有一个链接到jsFiddle http://jsfiddle.net/ddcxb/1/告诉我这是你正在寻找的。

答案 2 :(得分:1)

如何将css放到链接本身?像:

<ul>
    <li><a href="..."></a></li>
</ul>

a:hover {
    background: url(../images/liHover.png);
    background-repeat: no-repeat;
    background-position: fixed;
}

然后尝试使用背景位置固定..? 希望它会起作用..