この名前を聞くとすぐに、このフレームワークの効果を基本的にオンラインで達成できることがわかります。実際、以前のモーションフレームワークにはまだ制限がありました。つまり、いくつかの値を一緒に移動することはできません。
では、この問題を解決する方法は?以前のスポーツフレームワークを見てみましょう
関数getStyle(obj、name){if(obj.currentstyle){return obj.currentstyle [name]; } else {return getComputedStyle(obj、null)[name]; }} function startmove(obj、attr、itarget){clearinterval(obj.time); obj.time = setInterval(function(){var cur = 0; if(attr == 'ofacity'){cur = math.round(parsefloat(getStyle(obj、attr)) * 100);} else {cur = parseint(getStyle(obj、attr));} var速度=(speed) /速度> 0? Math.floor(cur == iTarge){obj.time); }}}}、30);}それを変更する方法は?実際にはとても簡単です。過去のフレームワークでは、一度に1つのスタイルと1つの値しか渡すことができませんでした。次に、これらをJSONオブジェクトに変更します。私は誰もが理解すると信じています。
私たちがそれを呼ぶとき、startmove(odiv、{width:200、height:200});必要に応じて、コールバック関数を追加します。それでは、コードの変更方法を見てみましょう。
function startmove(obj、json、fnend){var max = 18; //すべてのタイマーが呼び出され、1つのタイマーのみが動作します(既存のタイマーは動きが始まるとオフになります) obj.timer = setInterval(function(){var bstop = true; //仮定:すべての値が(jsonのvar name){var itarget = json [name]; //ハンドル透明度、parseintを使用できません。 round cur = math.round(getStyle(obj、name)*100)} Speed> 0?Math.Floor(speed); chrome} else {obj.style [name+speed+'px'; if(fnend)//この関数のみが渡され、{fnend(); }}}}、20);}なぜBSTOPについて何か仮定があるのですか?
実際、startmove(odiv、{width:101、height:200})を呼び出すと;幅は101になり、動きは完了し、高さは到達していませんが、現在のタイマーをオフにした可能性があります。演習は終了し、特別な状況でバグが発生します。説明しましょう:
実際、タイマーが終了する前にタイマーをオフにするには、すべての動きが必要です。逆に、不可能なものがない場合は、オフにします。プログラムでブール値を定義します。
すべての値が到着しました。ターゲットポイントに等しくない値がある場合、BSTOPは偽です。サイクル全体が終了した後、BSTOPはすべての動きになります。つまり、すべての動きが完了し、この時点でタイマーがオフになります。
その後、このモーションフレームワークは基本的に完了し、CSS2はCSS3には適用できません。
要約:
モーションフレームワークの進化
StartMove(itarget)モーションフレーム
startmove(obj、itarget)マルチオブジェクト
startmove(obj、attr、itarget)任意の値
StartMove(obj、attr、itarget、fn)チェーンモーション
StartMove(OBJ、JSON、FN)Perfect Sports
o(∩_∩)oありがとう〜