我需要使用 jQuery 为元素的背景位置属性设置动画。通过遵循使用默认 jQuery 动画功能的本教程,我没有运气。
http://snook.ca/archives/javascript/jquery-bg-image-animations
我的功能是:
$('#content').css( {backgroundPosition: "0 0"} )
.animate(
{backgroundPosition:"(0 -900px)"},
{duration:500}
);
我没有运气,所以我尝试编写自己的函数,改变元素的垂直背景位置。看起来像:
$.fn.moveBackgroundY = function( pixels, duration, easing ) {
return this.animate(
{ pixels: pixels },
{
step: function(now,fx) {
console.log("Background Y position - " + now);
$(this).css({
backgroundPosition: '0px ' + now + 'px',
});
},
duration: duration,
complete: function() {
$(this).css({
backgroundPosition: '0px 0px',
});
}
}, easing);
};
要将元素的 Y 背景位置设置为 -900,我这样调用函数:
$('#content').moveBackgroundY(-900, 2100, 'easeInOutCubic');
请注意,这里的变量now(背景位置 Y)在step:中将从 0 减小到 -900。
这很好用,但我的问题来了。在此之后,我需要直接使用 jQuery .css() 函数将此背景位置重置为“0px 0px”,然后再次对其进行动画处理,如下所示:
$('#content').moveBackgroundY(300, 2100, 'easeInOutCubic');
在这种情况下,当我将背景位置重置为“0px 0px”时,参数现在应该从 0 变为 300,但它从 -900 变为 300,其中 -900 是我在调用函数时设置的值。
任何人都知道出了什么问题,或者我如何重置此参数以便每次都采用正确的值?
我有另一个类似的函数,它可以旋转改变 CSS3 属性变换的元素 - 旋转,我也有同样的问题。
谢谢你的帮助!