我似乎遇到了 JQuery 动画的问题。我可以在正方向上为背景图像设置动画,但在负方向上不行。关于如何解决这个问题的任何建议?
$(this).parent().css('background-position-y', '19px');
$(this).parent().animate({ 'background-position-y': '-=19px' }, 1000, 'linear');
我似乎遇到了 JQuery 动画的问题。我可以在正方向上为背景图像设置动画,但在负方向上不行。关于如何解决这个问题的任何建议?
$(this).parent().css('background-position-y', '19px');
$(this).parent().animate({ 'background-position-y': '-=19px' }, 1000, 'linear');
通过单独定位背景background-position-x/y
是 Internet Explorer 引入的一项功能,但从未将其纳入 W3C 规范。此后,任何将其添加到规范中的建议都被拒绝了。
见: http ://snook.ca/archives/html_and_css/background-position-xy
您可以随时创建自己的小插件,这并不难。
使用 jQuery 1.8,我们现在可以访问 $.Animation 方法,该方法直接为我们提供动画值而无需太多工作,因此我们可以执行以下操作:
$.fn.animateBG = function(x, y, speed) {
var pos = this.css('background-position').split(' ');
this.x = pos[0] || 0,
this.y = pos[1] || 0;
$.Animation( this, {
x: x,
y: y
}, {
duration: speed
}).progress(function(e) {
this.css('background-position', e.tweens[0].now+'px '+e.tweens[1].now+'px');
});
return this;
}
然后要使用它,我们可以这样做:
$("#background").animateBG(x-value, y-value, speed);
这是我几天前为另一个答案准备的东西,它只适用于像素并且确实有一些限制,但它很简单,应该适用于大多数情况。
我想这样的事情会做你想要的:
$(this).parent()
.css('background-position', '0 19px');
.animateBG(0, 0, 1000);
@adeneo:此解决方案仅在您设置时才有效
this.x = pos[0].split('px')[0] || 0;
this.y = pos[1].split('px')[0] || 0;
否则起始位置将设置为零。