css背景位置不起作用

qwe*_*rty 13 css background-position

我有3个标签伪装成"翻转按钮".

<div id="buttons">
    <a class='button' id='but1' href=''></a>
    <a class='button' id='but2' href=''></a>
    <a class='button' id='but3' href=''></a>
</div>
Run Code Online (Sandbox Code Playgroud)

每个按钮都从CSS获取其初始图像,如下所示:

.button{
    background:url(theimage.jpg);
    width;height; etc...
}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试为每个特定元素分配初始背景位置时:

#but1{
    background-position:0 0;
}
#but1:hover{
    background-position:0 -50px;
}

#but2{
    background-position:0 -100px;
}
#but2:hover{
    background-position:0 -150px;
}

#but3{
    background-position:0 -200px;
}
#but3:hover{
    background-position:0 -250px;
}
Run Code Online (Sandbox Code Playgroud)

问题:每个按钮默认为位置0 0

请注意,悬停位置按预期工作.

我现在有点生病,所以这可能是一个疏忽,但我现在已经在这里待了一个小时,无法弄明白.

有什么想法吗?

谢谢

编辑 pastebin爱http://pastebin.com/SeZkjmHa

Joh*_*een 33

我没有复制你的问题.哪个浏览器?

最初的想法(没有看到错误的情况)是将初始背景定义从完整的"背景:"更改为背景图像声明:

.button{
  background-image:url(theimage.jpg);
  width;height; etc...
}
Run Code Online (Sandbox Code Playgroud)

通过设置背景,这是背景位置的容器,一些浏览器可能存在特殊性问题.

  • 这正是我之前谈到的特殊性问题.将#buttons .button中的'background'更改为'background-image:url(blah); background-repeat:no repeat',它可以正常工作. (2认同)

小智 9

拆分"背景"速记属性.

如果省略速记属性中的一个条目,则省略​​的条目将重置为默认值,而不是简单地单独使用.

所以正在发生的事情或多或少相当于:

#someElement {
    background-position:0 -100px;
    background:url(image.png) no-repeat;
    /* ^--- omitted background-position gets reset to the default */
}
Run Code Online (Sandbox Code Playgroud)

将速记分成不同的条目:

#someElement {
    background-image:url(image.png);
    background-repeat:no-repeat;
}
Run Code Online (Sandbox Code Playgroud)

编辑:在你的代码中,background-position值位于值之后background......但是我很确定#buttons .button选择器比#retain-our-firm类似的选择器更具体,这意味着它的规则优先于其他选择器,即使其他选择器也是如此.


小智 5

我知道这是很久以前问过的问题,但我想我已经解决了。

我遇到了完全相同的问题,定位在 Chrome 等中有效,但在 Firefox 中无效。

花了这么长时间才找出愚蠢的答案,

background-position     :   7 4;
Run Code Online (Sandbox Code Playgroud)

可以在 chrome 中工作,但不能在 Firefox 中工作。

background-position     :   7px 4px;
Run Code Online (Sandbox Code Playgroud)

将在两者中工作。