Я написал код ниже.Я пытаюсь вызывать функции одну за другой на основе обработчиков событий animationend.Проблема возникает в коде js после startScreenContainer.classList.add('thisFadeOut');
Я ожидал, что функция: removeStartScreen();
будет вызвана событием animationend: thisFadeOutAnim.Я предполагаю, что removeStartScreen();
вызывается событием animationend rainbowFlashAnim, потому что элементу startScreenContainer назначаются классы thisFadeOut и thisRemove одновременно.Так что thisFadeOutAnim не имеет шансов на запуск.Я искал в Интернете и нашел некоторую информацию об animationName, но не могу понять, как реализовать эту концепцию.Или я просто все делаю не так !?
Мой вопрос: Есть ли способ добавить прослушиватель событий к событиям определенной анимации?
var startButton = document.querySelector('#startButton');
startButton.addEventListener('mouseup', startButtonClicked);
function startButtonClicked(){
startButton.classList.remove('startButtonPulse');
startButton.classList.add('startButtonClicked');
startButton.innerHTML = "LET'S GO!";
startButton.addEventListener('animationend', fadeOutStartScreen);
function fadeOutStartScreen(){
var startScreenContainer = document.querySelector('#startScreenContainer');
startScreenContainer.classList.add('thisFadeOut');
startScreenContainer.addEventListener('animationend', removeStartScreen);
function removeStartScreen(){
startScreenContainer.classList.add('thisRemove');
}
}
}
.startButtonPulse{
animation: buttonPulseAnim 1.5s;
animation-iteration-count: infinite;
animation-timing-function: ease;
}
@keyframes buttonPulseAnim {
0% {transform: scale(1);}
12.5% {transform: scale(1.05);}
25% {transform: scale(1);}
37.5% {transform: scale(1.05);}
50% {transform: scale(1);}
}
.startButtonClicked{
animation: rainbowFlashAnim 0.5s;
animation-iteration-count: 4;
animation-fill-mode: forwards;
}
@keyframes rainbowFlashAnim{
20% {background: cyan;}
40% {background: lime;}
60% {background: magenta;}
80% {background: red;}
}
.thisFadeOut {
animation-name: thisfadeOutAnim;
animation-duration: 0.5s;
animation-fill-mode: forwards;
}
@keyframes thisfadeOutAnim {
from {opacity: 1;}
to {opacity: 0;}
}
.thisRemove {
display: none !important;
}