現在、JavaScriptにてCSSのアニメーション制御を行っております。
同じセレクタに対しaddEventListener(webkitTransitionEnd)をネストして複数回利用していて、
違う関数を毎回セットする方法を用いております。
その際に、'webkitTransitionEnd'のコールバックが2回目以降トランジション終了時ではなく、
2回目以降の関数が全て同時に発火します。
この現象を防ぐためにはどのようなアニメーションの制御を行えばよいのでしょうか。
そもそもJavascriptで、同じ要素に対して連続したCSSアニメーションを制御する方法は、
addEvetLisenerを利用するやり方以外に行う方法はありますか。
(setTimeout以外でいい方法があれば教えていただきたいです)
教えていただけますと幸いです。よろしくお願い致します。
JavaScript
1/////////////////////////////////////////////////////////////////////////// 2 var callback1 = function() { } 3 var callback2 = function() { } 4 var selector = document.getElementById('#example'); 5 selector.style.opacity = '0'; 6 selector.style.opacity = '750px'; 7 selector.style.webkitTransitionDuration = '300ms'; 8 selector.style.webkitTransitionTimingFunction = EASE['InOutQuint']; 9 // 2度目のアドイベントリスナー(ネストの中)で呼び出したい処理 10 callback2 = (function(e) { 11 // ここの処理がcallback1と同時に処理されてしまいます 12 selector.removeEventListener('webkitTransitionEnd', callback2); 13 selector.style.right = windowWidth / 2 - 10 + 'px'; 14 selector.style.bottom = windowHeight / 2 - 10 + 'px'; 15 selector.style.opacity = '0'; 16 selector.style.webkitTransitionDuration = '450ms'; 17 selector.style.webkitTransitionTimingFunction = EASE['InOutQuint']; 18 }); 19 // 1度目のアドイベントリスナーで呼び出したい処理 20 callback1 = (function() { 21 // ここでまずイベントリスナーをリムーブしています 22 selector.removeEventListener('webkitTransitionEnd', callback1); 23 selector.style.width = '20px'; 24 selector.style.height = '20px'; 25 selector.style.bottom = '20px'; 26 selector.style.right = '20px'; 27 selector.style.borderRadius = '10px'; 28 selector.style.transform = 'rotate(520deg)'; 29 selector.style.webkitTransitionDuration = '450ms'; 30 selector.style.webkitTransitionTimingFunction = EASE['InOutQuint']; 31 // 2度目のアドイベントリスナー 32 taki.addEventListener('webkitTransitionEnd', callback2); 33 }); 34 // 1度目のアドイベントリスナー 35 selector.addEventListener('webkitTransitionEnd', callback1); 36/////////////////////////////////////////////////////////////////////////// 37 38
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/09/01 02:32
2016/09/01 02:43
退会済みユーザー
2016/09/01 06:25