前提・実現したいこと
生のJavaScript(jQuery不使用)でscrollLeft
をアニメーションで付きスライドさせたいです。
以下の記事を参考にしました。
https://ics.media/entry/17183/
しかし、今のコードだと、
- ページ読み込み時に
anima()
を実行するとスライドする。 addEventListener
のclick
でanima()
を実行するとスライドしない。
という状態です。
この原因がわからなくて困っています。
作成中のサンプルコード一式
https://codepen.io/dadada-dadada/pen/NWNzmEO?editors=1111
該当のソースコード
JavaScript
1function anima(_start, _end, _time){ 2 const target = document.getElementById("target"); // アニメーションの対象 3 const start = _start; 4 const end = _end; 5 const diff = end - start; // 変化量 6 const time = _time; // 変化にかける時間 (ミリ秒) 7 8 // アップデートを実行する 9 requestAnimationFrame(update); 10 11 function update(timestamp) { 12 // 進捗率を算出 13 progress = timestamp / time; 14 15 // 進捗率が100%を超えないよう丸める 16 progress = Math.min(progress, 1); 17 18 // 値を算出し反映する 19 const result = start + diff * progress; // X座標 20 21 target.scrollLeft = result 22 23 // 進捗が1未満の場合はアップデートを再実行する 24 if (progress < 1) { 25 requestAnimationFrame(update); 26 } 27 28 } 29} 30anima(0, 300, 500) // スライドする 31 32document.getElementById("btn").addEventListener('click', () => { 33 anima(0, 300, 500) // スライドしない 34})
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。