先头——JavaScript基础编アニメーション(先に遅いアニメーション効果)demo
1949 ワード
今日はアニメの例を緩めに来ました.自分の後のコピー・貼り付けのためです.助けていただければ、持って行ってもいいです.話を多くしないで、直接コードをかけます.
目標距離:target:500初回(500-0)/10 =50第二回(500-50)/10 =45回目 (500-(50+45)/10=40.5 第二次移動終了後のdivの距離は95=50+45、つまり3回目の移動開始の初期位置です. ...
クイックボタンを押すと、何度も起動したものと同じです.タイマーは常に重畳しています.速度がますますブロックされます 解決: 1、対象元素のodiv.timerにタイマーの値を付与し、タイマーを実行する時はタイマーに停止します. 2、小数点問題:右に移動(目標値>0)する時は上に整数を取り、目標に近づくようにする Math.ceeir(step) 例えば:7.1 上に取ります 左に移動(目標値<0)すると下に整数を取ります.同じです. Math.flor(step) 例えば、-9.9を下に取る-10 3、ページドキュメントのデフォルトの内外脚本家をクリアした場合
機能を追加: コールバック関数:アニメーション終了後の動作 イベントをトリガーした後 タイマーメソッドを起動する時:三つ目のパラメータを渡すこのパラメータは関数です. タイマーの方法は第三の参照を受信し、アニメーション終了後にこのパラメータを呼び出します.
私の文章は全部学習中の総括です.もし間違いを見つけたら、メッセージを歓迎します.
,
js部分:
var odiv = document.querySelector('.box');
var obtn = document.querySelector('button');
function animate(odiv,target,callback){
clearInterval(odiv.timer);
odiv.timer = setInterval(function(){
console.log(1);
var step = (target - odiv.offsetLeft) / 10 ;// -
step = step > 0 ? Math.ceil(step) : Math.floor(step);
if (odiv.offsetLeft === target) {
clearInterval(odiv.timer);
if (callback) {
callback();
}
}
odiv.style.left = odiv.offsetLeft + step + 'px';
},30);
}
obtn.addEventListener('click',function(){
animate(odiv,1000,function(){
alert(' ');
})
})
思考解析:目標距離:target:500初回(500-0)/10 =50第二回(500-50)/10 =45回目 (500-(50+45)/10=40.5 第二次移動終了後のdivの距離は95=50+45、つまり3回目の移動開始の初期位置です. ...
クイックボタンを押すと、何度も起動したものと同じです.タイマーは常に重畳しています.速度がますますブロックされます 解決: 1、対象元素のodiv.timerにタイマーの値を付与し、タイマーを実行する時はタイマーに停止します. 2、小数点問題:右に移動(目標値>0)する時は上に整数を取り、目標に近づくようにする Math.ceeir(step) 例えば:7.1 上に取ります 左に移動(目標値<0)すると下に整数を取ります.同じです. Math.flor(step) 例えば、-9.9を下に取る-10 3、ページドキュメントのデフォルトの内外脚本家をクリアした場合
機能を追加: コールバック関数:アニメーション終了後の動作 イベントをトリガーした後 タイマーメソッドを起動する時:三つ目のパラメータを渡すこのパラメータは関数です. タイマーの方法は第三の参照を受信し、アニメーション終了後にこのパラメータを呼び出します.
私の文章は全部学習中の総括です.もし間違いを見つけたら、メッセージを歓迎します.