Используя CSS для создания анимации, как вы, кажется, делаете, я не уверен, что вы можете заставить это работать точно, так как нет очевидного метода обратного вызова анимации с CSS.
Вы могли бы угадать этоиспользуя setTimeout, но это не будет точным.Вы также можете использовать опрос.Допустим, например, что вы знаете, что непрозрачность будет равна 0 для вашего элемента после завершения анимации, вы можете использовать setInterval следующим образом:
const interval = setInterval(() => {
const el = document.getElementById('myElement')
if (window.getComputedStyle(el).getPropertyValue("opacity") === 0) {
clearInterval(interval)
// execute your animate complete code here
}
}, 100)
Этот интервал перестанет срабатывать, как только анимация завершится.
Однако, если вы хотите использовать jQuery, который имеет функцию обратного вызова полной анимации.Функция будет выполнена, когда анимация будет завершена.
Документы находятся здесь: http://api.jquery.com/animate/
Вот пример того, как может выглядеть код jQuery:
$( "#clickme" ).click(function() {
$( "#book" ).animate({
opacity: 0.25,
left: "+=50",
height: "toggle"
}, 5000, function() {
console.log('Animation complete.')
});
});