###前提
前回の質問でdivのboxをjavascriptのみでアニメーション移動させることについて質問しましたが、あれから試行錯誤を重ねて成功しました。
現状としましてはクリックした箇所にboxがイージングアニメーションをしながら移動します。
###発生している問題
一つだけ問題なのが、最初にクリックした時のboxの移動速度と10回ほどクリックした時の移動速度が変わってしまうことです。
クリックしてboxを移動させる度に移動速度が速くなってしまいます。
setIntervalの使い方が間違っているのか、それとも原因が他にあるのか手詰まり状態です。
ご回答どうぞよろしくお願いします。
該当のソースコードをjsfiddleにアップしていますので、ご活用ください。
https://jsfiddle.net/ululami/c29aLprv/
###該当のソースコード
javascript
1var box = document.getElementById('box'); 2var clientRect; 3//boxのx軸とy軸 4var boxX; 5var boxY; 6//クリックした箇所のx軸とy軸 7var clickX = 0; 8var clickY = 0; 9 10document.addEventListener('click', function(event){ 11 clientRect = box.getBoundingClientRect(); 12 13 boxX = clientRect.left; 14 boxY = clientRect.top; 15 16 clickX = event.clientX; 17 clickY = event.clientY; 18 19 setInterval(function(){ 20 box.style.left = boxX + 'px'; 21 box.style.top = boxY + 'px'; 22 23 if(boxX < clickX || boxY < clickY){ 24 boxX = boxX + (clickX - boxX) / 50; 25 boxY = boxY + (clickY - boxY) / 50; 26 } else if(boxX > clickX || boxY > clickY){ 27 boxX = boxX - (boxX - clickX) / 50; 28 boxY = boxY - (boxY - clickY) / 50; 29 } 30 }, 30) 31});
html
1<div id="box"></div>
css
1*{ 2 margin: 0; 3 padding: 0; 4} 5 6#box{ 7 width: 50px; 8 height: 50px; 9 background: red; 10 position: relative; 11}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/22 07:13