Вложенные переходы Vue: один переход работает, другой — нет

#vue.js #css-animations #vue-transitions

Вопрос:

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

Но в то время как затухание работает, скольжение вверх-нет. Что я делаю не так?

Шаблон:

 <transition name="modal">
  <div v-if="showModal" class="backdrop">
    <transition name="content">
      <div v-if="showModal" @click="showModal = false" class="container">
        content
      </div>
    </transition>
  </div>
</transition>
 

CSS анимация:

 .modal-enter-active {
  animation: fade-in-and-slide-up 1s;
}

.content-enter-active {
  animation: wait-and-fade-in 4s;
}

@keyframes wait-and-fade-in {
  0% {
    opacity: 0;
  }

  66% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}

@keyframes fade-in-and-slide-up {
  0% {
    transform: translateY(100%);
  }

  50% {
  }

  100% {
    transform: translateY(0);
  }
}
 

Codesandbox

Ответ №1:

Чтобы включить переход при начальной визуализации, используйте appear :

 <transition name="modal">
    <div v-if="showModal" class="backdrop">
      <transition name="content" appear>
                                   👆
 

ДЕМОНСТРАЦИЯ