jQuery 1.6:backgroundPosition与backgroundPositionX和FF​​4的兼容性

时间:2011-06-12 14:00:54

标签: jquery jquery-animate firefox4 background-position

试图升级jQuery插件'iCheckbox'(http://stackoverflow.com/questions/6032538/)以上工作jQuery 1.4.4我发现使用

 animate({backgroundPosition:'10px 0px'})

需要更改为

animate({backgroundPositionX: '10px', backgroundPositionY:  '0px'})

因为只应使用带有一个参数的属性。到目前为止,这是有道理的,但等等..虽然它在Safari和Chrome中运行良好,但它不适用于FF4(全部在Mac上)..

所以我尝试了这一点,并最终发现如果我将其改为

animate({backgroundPosition: '10px'})

无处不在! 但是这里发生了什么?现在我只给出一个参数,它可以工作,但是我没有指定它是用于X轴还是Y轴(因此它看起来默认为X轴......但是如果我希望它在Y轴上工作怎么办?)

这看起来很奇怪,我的解决方案不是正确的做法..所以我需要一些建议:

发生了什么事?

如何使用jQuery 1.4 - 1.6为背景位置设置动画,以便它可以在浏览器中运行?

2 个答案:

答案 0 :(得分:1)

首先,JQuery无法同时为两个值设置动画,因此您看到为backgroundPosition输入两个值根本不起作用。另请注意,对于px值,JQuery documentation会鼓励您撰写px

其次,backgroundPositionXbackgroundPositionY只是少数浏览器支持的非标准 CSS属性,最明显的是IE和最近的Webkit,这就是为什么你会发现它在FF或Opera中不起作用。 (See here。)

我发现混合JQuery的animate和CSS过渡可以在大多数浏览器中为一个轴上的背景图像设置动画。我将引用我对另一个问题的回答(jQuery.animate background-position):

  

分别使用JQuery的.animate()backgroundPositionX以及Y   对于IE(这将适用于最新的JQuery)。然后在浏览器中   support CSS transitions(几乎除了IE之外的所有内容),请使用   .css()代替.animate()来更改背景位置和设置   样式表中的CSS转换。

     

您将使用上述内容覆盖大多数浏览器,但它可能不是AS   只使用插件兼容。在这里看到它:   http://jsfiddle.net/lucylou/dVpjh/

答案 1 :(得分:0)

根据: http://www.w3schools.com/css/pr_background-position.asp

“如果你只指定一个值,另一个值将是50%。你可以混合%和位置”