これが機能していないようです。
$('#product_family_options_dd').animate({
height: '300px',
width: '900px',
backgroundPosition: '-20px 0px',
},
高さと幅はアニメーション化されますが、背景はアニメーション化されません。
次のような個別の値を使用するだけであれば、背景アニメーションプラグインを使用する必要はありません。
$('.pop').animate({
'background-position-x': '10%',
'background-position-y': '20%'
}, 10000, 'linear');
私はそれが単一の値を期待しているからかもしれないと思う?
jQueryのアニメーションページ から取得:
アニメーション化されたプロパティはすべて、以下に記載されている場合を除き、単一の数値にアニメーション化される必要があります。数値以外のほとんどのプロパティは、基本的なjQuery機能を使用してアニメーション化できません。 (たとえば、幅、高さ、または左はアニメーション化できますが、背景色はアニメーション化できません。)特に指定がない限り、プロパティ値はピクセル数として扱われます。単位emおよび%は、該当する場合に指定できます。
JQueryはこれを最初からサポートしていないので、これまでに出会った最善の解決策は、jQueryで独自の CSSフック を定義することです。基本的に、これはjQuery.animate()でも機能するCSS値を取得および設定するカスタムメソッドを定義することを意味します。
Githubにはこのための非常に便利な実装が既にあります: https://github.com/brandonaaron/jquery-cssHooks/blob/master/bgpos.js
このプラグインを配置すると、次のようなことができます。
$('#demo1').hover(
function() {
$(this).stop().animate({
backgroundPositionX: '100%',
backgroundPositionY: '100%'
});
},
function () {
$(this).stop().animate({
backgroundPositionX: '105%',
backgroundPositionY: '105%'
});
}
);
私にとって、これはIE6 +を含むこれまでにテストされたすべてのブラウザーで機能しました。
ちょっと前に demo をオンラインにしましたが、さらにガイダンスが必要な場合は、それを分解することができます。
jQueryのアニメーション関数は、DOMオブジェクトのプロパティを直接アニメーション化するためだけに使用できるわけではありません。変数をトゥイーンし、関数stepを使用してトゥイーンのすべてのステップの変数を取得することもできます。
たとえば、background-position(0px 0px)からbackground-position(100px 500px)にbackground-positionをアニメートするには、次のようにします。
$({temporary_x: 0, temporary_y: 0}).animate({temporary_x: 100, temporary_y: 500}, {
duration: 1000,
step: function() {
var position = Math.round(this.temporary_x) + "px " + Math.round(this.temporary_y) + "px";
$("#your_div").css("background-position", position);
}
});
Step関数内のthis。を忘れないようにしてください。
JQueryコードでは、backgroundPosition部分の後にコンマがあります。
backgroundPosition: '-20px 0px',
ただし、.animate()メソッド(および同様のメソッド)で変更するさまざまなプロパティをリストする場合、中括弧の間にリストされた最後の引数の後にカンマを付けないでください。そのために背景の位置が変更されないのかどうかはわかりませんが、それはエラーであり、修正することをお勧めします。
更新:今行った限られたテストでは、純粋な数値(「px」なし)を入力すると、.animate()メソッドのbackgroundPositionで機能します。言い換えれば、これは動作します:
backgroundPosition: '-20 0'
ただし、次のことはできません。
backgroundPosition: '-20px 0'
お役に立てれば。
数学の組み合わせ「-=」を使用して背景を移動することもできます
$(this).animate( {backgroundPositionX: "-=20px"} ,500);
2つの値が関係するため、単純なjqueryのAnimateを使用してこれを行うことはできません。
解決するには、 Background Position Plugin を含めるだけで、背景を自由にアニメーション化できます。
SetIntervalメソッドを使用して画像の背景位置を変更できます。こちらのデモを参照してください: http://jquerydemo.com/demo/animate-background-image.aspx
backgroundPosition:"(-20px 0)"
を試してください
再確認するには、これを バックグラウンド位置 プラグインを参照していますか?
jsfiddle でのバックグラウンド位置プラグインの例。
Div My_div 250px x 250px、背景画像も250 x 250
css:
#My_div {
background: url("..//img/your_image.jpg") no-repeat;
background-position: 0px 250px;
}
javascript:
$("#My_div").mouseenter(function() {
var x = 250;
(function animBack() {
timer = setTimeout(function() {
if (x-- >= 0) {
$('#My_div').css({'background-position': '0px '+x+'px'});;
animBack();
}
}, 10);
})();
});
$("#My_div").mouseleave(function(){
$('#My_div').css({'background-position': '0px 250px'});
clearTimeout(timer);
});
私はそれが役立つことを願っています