Задать вопрос
Login8
@Login8
Программист, критик, наватор

Почему сбрасывается высота контейнера при использовании анимации transition в vue?

Странно анимация ведет себя в vue.
Пытаюсь анимировать высоту контейнера, всё работает, но потом резко сбрасывается высота. Пробовал анимировать свойство opacity, тоже все работает как положено и ничего не сбрасывается, а высота почему-то все время сбрасывается.
Я записал гифку, чтобы было понятно что я имею ввиду:

696a787177cb0737658170.gif

А вот сам код:

<template>
    <Transition name="ggg">
      <div v-show="isShow" class="preview_uploaded_image_window">

      </div>
    </Transition>
   <button @click="isShow = true" value="click!"></button>
<template>

<style>
div.preview_uploaded_image_window{
  background-color: #fff;
  width:8em;
   border-radius:0.4em 0.4em 0 0;
  border: 0.1em solid #e1e1e1;
  border-bottom:0;
  padding: 0 0.3em 0 0.5em;
}

.ggg-enter-active,
.ggg-leave-active {
  transition: height 5s ease;
}

.ggg-enter-from,
.ggg-leave-to {
  height: 0;
}

.ggg-enter-to,
.ggg-leave-from {
  height: 8em;
}
</style>

В чём может быть дело?
  • Вопрос задан
  • 56 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Stepik
    Игра на Vue.js
    1 неделя
    Далее
  • OTUS
    Vue.js разработчик
    4 месяца
    Далее
  • Академия Eduson
    Frontend-разработчик
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
0xD34F
@0xD34F Куратор тега Vue.js
А почему не должна сбрасываться?

Высота задаётся через классы, которые используются для анимации. Анимация закончилась - класс убрался. Класс убрался - убрался соответствующий стиль height. Всё.

Высота из enter-to/leave-from должна быть высотой по умолчанию, а сами эти классы тут не нужны.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы