jQueryを使用して要素のbackground-positionプロパティをアニメーション化する必要があります。デフォルトの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');
ここで、 step:内の変数(バックグラウンド位置Y)が0から-900に減少することに注意してください。
それはうまくいきますが、ここに私の問題があります。この後、jQuery .css()関数を使用してこの背景位置を直接「0px0px」にリセットし、次のように再度アニメーション化する必要があります。
$('#content').moveBackgroundY(300, 2100, 'easeInOutCubic');
この場合、背景位置を「0px 0px」にリセットすると、パラメーターは0から300になりますが、-900から300になります。ここで、-900は、関数を呼び出して最初に設定した値です。
誰もが何が悪いのか知っていますか、それとも毎回正しい値を取るようにこのパラメータをリセットするにはどうすればよいですか?
CSS3プロパティの変換を変更して要素を回転させるそのような別の関数があります-rotate、そして私は同じ問題を抱えています。
ご協力いただきありがとうございます!