###前提・実現したいこと
jQueryなどのプラグインを使わずにJavaScriptのみでイージングの効いたアニメーションを実現させたいです。
現状としましてはsetIntervalを使い、0.01秒間隔でidがboxの要素のcssにプラス一づつ増やしていき、横に動かしています。
値が200以上になるとclearIntervalを使ってストップさせています。
ここまでは実装できたのですが、200に近づくにつれて移動速度を遅くしたい(イージングさせたい)と思っています。
###試したこと
プラス2づつ増やしていき、例えば150以上になったらプラス1づつに変更させてみたのですが、当たり前ですが、急にがくんと変化し、この考え方だと160以上ならプラス0.5づつ、170以上なら0.25ずつ増やすといったやり方になってしまうため、汎用性がないと思います。
該当のソースコードをjsfiddleにアップしていますので、
ご活用ください。
https://jsfiddle.net/ululami/54faxmgm/
ご回答、アドバイスよろしくお願いいたします。
###該当のソースコード
javascript
1var timer; 2var xPosition = 0; 3 4timer = setInterval('moveBox();', 10); 5 6function moveBox(){ 7 xPosition ++; 8 document.getElementById('box').style.left = xPosition + 'px'; 9 10 if(xPosition >= 200){ 11 clearInterval(timer); 12 } 13}
html
1<div id="box"></div>
css
1#box{ 2 width: 100px; 3 height: 100px; 4 background: tomato; 5 position: relative;; 6}
回答5件
あなたの回答
tips
プレビュー