38

我玩过 youtube 的精灵动画,但有一个问题。backgroundPositionX不能在 Firefox 下工作(但可以在 Chrome 和 IE8 上工作)......这是代码:https ://jsfiddle.net/74RZb/

额外信息:问题是在Firefox下它不会改变背景位置(不会播放动画)......没有错误,只是没有改变背景位置。

4

6 回答 6

60

Firefox 不支持 backgroundPositionX,但它支持背景位置

所以我们可以这样做:

psy.style.backgroundPosition = x+'px 0';

这将设置背景位置,首先是 X,然后是 Y。

这里的工作示例

于 2012-12-19T09:02:02.223 回答
3

这适用于 IE、FF 和 chrome:

背景位置:0 中心;

于 2015-07-02T00:53:44.917 回答
2

这对我有用。是 X轴和 YNX轴上的像素数。NY

background-position: calc(NXpx) NYpx;
于 2013-04-11T21:41:36.100 回答
1

像这样使用:

background-position: calc(100% - 20px) center; // working on chrome and ff
background-position-x: calc(100% - 20px); // working on ie
于 2015-12-21T04:24:45.987 回答
0

你可以做这样的事情

首先安装jquery迁移

https://github.com/jquery/jquery-migrate/#readme

将这些包含在您的 html 中

$.browser 属性允许你定位你想要应用你的样式的浏览器

在这种情况下,背景位置可以更改为支持的属性 backgroundPosition

可用的标志是 - webkit - safari -opera - msie (for IE) - mozilla

IE 或 Firefox 的示例

if ( $.browser.msie || $.browser.mozilla) {
        $(".element").css('backgroundPosition', position + "px 0");                
}

用于镀铬

if ( $.browser.webkit) {
        $(".element").css('backgroundPosition', position + "px 0");                
}

我让我的工作和所有的 IE

干杯

于 2014-12-11T05:30:32.137 回答
0

背景位置-x 可以在 Firefox 中工作,您只需指定一个固定的背景-y 位置。这是我编写的用于从左向右移动功能区的函数。起初,当只有一个 position-x 规范时它不起作用,它在 IE 中有效,但在 FF 中无效。这是我的解决方案。这是来自我的网站的带有评论的实际代码,适用于 IE 和 FF:

   //starts ribbon motion at bottom of animation div 
    function startMotion() {
        var ribbonMove = setInterval(function () { ribbonMotion() }, 50);
        var x = 0;
        var cycles = 0;

        function ribbonMotion() {
            //background position moves on the x plane and is fixed at 0 on the y plane (single plane specification does not work in FF)
            document.getElementById("ribbon").style.backgroundPosition = x + "px" + " " + 0 + "px";
            x++;
            if (x == 800 || x==1600 || x==2400 ||x==3200) {
                cycles++;

              //sets number of cycles before motion stops (max 4 cycles)  
            }
            if (cycles == 3) {
                clearInterval(ribbonMove);
            }
        }
    }  
于 2013-07-19T21:18:56.497 回答