2012-01-20 16 views
0

私は助けjqueryアニメーションとステップ関数で私のdivをフェードアウトしようとしましたが、私のロジックが動作していません。私はアニメーション機能が私のdivの高さを減らすときにfadeout divにしたい&幅は50%です。私はdivの高さ&の幅がほぼ半分になったら、私は非常にスムーズにdivをフェードアウトしたいと思います。jqueryアニメーションとステップ関数の使用

私のコードは動作していますが、効果は望めません。可能であれば、私のコードを見て修正してください。ここであなたは実装を見ることができるURLです。 http://jsfiddle.net/Sj4eG/12/

部分だけ

grower.animate({width:0, height:0, left:(windowWidth/2 - $('#grower').width()), top:(windowHeight/2 - $('#grower').height())}, 
{ 
duration: 1000, 
step: function(now, fx) { 
       alert(now); 
    if (fx.prop == "height") { 
     var threshold = fx.start/2; 

     if (now < 150) { 
      $(fx.elem).css("opacity", now/threshold); 
     } 
    } 
} 
}); 
+0

私はあなたがコードにしたいことを実際に理解していませんか?それが既に存在する方法とは何が違うでしょうか? – JackalopeZero

+0

ただURLに行き、その効果を見てください。高さが非常に小さくなるとdivがフェードアウトになっているのが分かります。しかし、私はそのdivが150ピクセルになるときにフェードアウトする必要があります。 – Thomas

答えて

0

step関数を使用せずにopacityを再計算する代わりに、アニメーション化するときにspecialEasingプロパティを使用できます。これにより、アニメーション化された各プロパティに対して異なるイージングを持つことができます。
アニメーションが進行の50%に達するまで、アニメーション化されないイージング関数を定義するだけで済みます。 (イージング関数を理解するために私を助けhere's the resource
これは非常に簡単に行うことができます。

$.easing['my_easing_name'] = function(p){ 
    return p < 0.5 
       ? 0 
       : 2 * (p-0.5); 
}; 

は、その後、あなたはそれが好きで使用することができます:ここで

$('element').animate({ 
     prop1 : value1, 
     prop2 : value2 
    },{ 
     duration : 1000, 
     specialEasing : { 
      prop1 : 'liniar', 
      prop2 : 'my_easing_name' 
     } 
}); 

は私のバージョンのデモです: http://jsfiddle.net/gion_13/Sj4eG/32/

+0

あなたは良いと思うが、ur url http://jsfiddle.net/gion_13/Sj4eG/32/に行きますが、高さと幅が50%減少すると、divがフェードアウトしていないことが分かりました。だから私は機能をイージーでそれを行う方法を示すためにちょうど私のコードを変更してください。ありがとう – Thomas

1

thisのようなものの下にこれを変更する必要がありますか?

申し訳ありませんが中心に!

+0

私は私の要求を理解していないことを願っています。 – Thomas

+0

それを中心にする方法は? – Thomas

関連する問題