Как дождаться окончания transition

203
24 декабря 2021, 21:50

Есть вёрстка - https://mihinov.github.io/news/
При клике на меню, выходит оверлей, в котором есть календарик



Если нажать на крестик, то меню начнёт закрываться. Если во время закрытия пролистнуть вниз, то оверлей сожмётся, из-за того, что я сделал скрытие хедера при пролистывании вниз.



Я хотел бы сделать слушатель на окончание transition, но он вместо окончания анимация, срабатывает сразу в начале, при клике.

До того, как transition ещё не закончился document.body нельзя скроллить, после того, как сработало нужное событие, можно скроллить.
Я так сделал:

function showMessage() {
    console.log(1); // тут нужный код
}
header__burger.addEventListener("transitionend", showMessage());



Как это работает: при каждом закрытии заново объявляется функция showMessage(), и задаётся слушатель с новой созданной функцией. Но проблема в том, что transitionend срабатывает сразу при закрытии. Как сделать так, чтобы transitionend срабатывал только при окончании анимации?

Answer 1

Нужно было не вызывать функцию при объявлении слушателя. А также нужно было удалять слушатель, после того, как сработал слушатель.

function showMessage() {
    console.log(1);
    header__burger.removeEventListener("transitionend", showMessage);
}
header__burger.addEventListener("transitionend", showMessage);
READ ALSO
Должны ли Entity-классы реализовывать Serializable

Должны ли Entity-классы реализовывать Serializable

Смотря старые видео и статьи по Hibernate обнаружил, что все Entity в их примерах реализуют интерфейс SerializableОдин парень на видео даже сказал, что...

132
Java Stream api как вернуть обработанный поток

Java Stream api как вернуть обработанный поток

Изучаю Java, делаю задачу по stream api, но решение не проходит

98
Наследование java [дубликат]

Наследование java [дубликат]

Объясните пожалуйста для чего это, если мы создали класс Animal, потом Cat extends Animal, для чего создают объекты вида Animal barsik = new Cat(); если могли просто...

111
сохранение в Json

сохранение в Json

мне нужно сохранить файл в формате Json, чтобы потом при открытии я мог использовать данные которые сохранил, желательно сохранить файл в конкретную...

183