あなたはservalの方法でそれを行うことができます。
1つの方法は、アニメーションクラスを追加する前に要素の再フローをトリガすることです。例えば
element.offsetWidth = element.offsetWidth;
(バニラJS):
if (element2.classList.contains('show')) {
element2.classList.remove("show");
//restarting css3 keyframe animation
**element2.offsetWidth = element2.offsetWidth;**
element2.classList.add("hide");
}else{
element2.classList.remove("hide");
//restarting css3 keyframe animation
**element2.offsetWidth = element2.offsetWidth;**
element2.classList.add("show");
}
jQueryのバージョン:それはこちら
if(settingPopup.hasClass('show')){
settingPopup.removeClass('show');
//line below is a fix to restart css3 keyframe animation
//settingPopup.outerWidth(settingPopup.outerWidth)
settingPopup.outerWidth(settingPopup.outerWidth).addClass('hide');
}else{
settingPopup.removeClass('hide');
//line below is a fix to restart css3 keyframe animation
//settingPopup.outerWidth(settingPopup.outerWidth)
settingPopup.outerWidth(settingPopup.outerWidth).addClass('show');
}
そして働いているフィドル: https://jsfiddle.net/zpawpvke/2/
に基づいて:https://css-tricks.com/restart-css-animation/
私は答えを見つけることができませんでしたので、私はそれをmyslefにします – born2fr4g
http://stackoverflow.com/questions/35200605/refire-css-animation-with-javascript-after-a-previous-one-is-complete/35203145 #35203145 – Harry
これは別のアプローチです。私のほうが短くて簡単ですし、少し違った質問です(クラス追加時) – born2fr4g