@Muvka

Как можно обойти setTimeout для срабатывания transition?

Пытаюсь сделать анимацию октрытия меню на css переменной и transition. Высота блока может быть разной. Поэтому я вычисляю высоту блока и прописываю ее в css переменную. Но проблема в том, что если запускать анимацию, т.е. добавить нужный класс сразу, после установки переменной, анимация не проигрывается. Работает только через setTimeout с задержкой в 20мс. Можно ли как-то без таймаута обойтись?
this.$menu.style.maxHeight = 'none';
const height = this.$menu.offsetHeight;
this.$menu.style.maxHeight = '';
this.$menu.style.setProperty('--height', `${height}px`);

setTimeout(() => {
   this._startOpenAnimation()
     .then(() => {
       this.blocked = false;
       this.opened = true;
    });
}, 20);

_startOpenAnimation просто добавляет классы и возвращает промис.
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
wapster92
@wapster92 Куратор тега CSS
Привяжите @keyframe к классу и используйте свойство animation, а не transition
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы