1. Какие элементы/компоненты подходят для анимации в данных условиях
- Условный рендеринг (с использованием v-if)
- Условное отображение (с помощью v-show)
- динамические компоненты
- корневой узел компонента
имя класса перехода
Простой пример: (текст скрыт, чтобы показать эффект)
<div>
<button @click="show = !show">show toggle</button>
<transition name="fade"> //fade 自定义名称
<p v-if="show">hello</p>
</transition>
</div>
<style>
.fade-enter-active, .fade-leave-active{ //指就是html中fade名称
transition: opacity .5s; 0.5s动画过渡的时间
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
</style>
параметр имени класса перехода
-
v-enter: определяет начальное состояние перехода входа. Вступает в силу до вставки элемента и удаляется в следующем кадре после вставки элемента.
-
v-enter-active: определяет состояние, когда переход ввода вступает в силу. Применяется на протяжении всего перехода входа, вступает в силу до вставки элемента и удаляется после завершения перехода/анимации. Этот класс можно использовать для определения времени процесса перехода входа, задержек и функций кривой.
-
v-enter-to: Версия 2.1.8 и выше Определяет конечное состояние перехода ввода. Вступает в силу в следующем кадре после вставки элемента (при одновременном удалении v-enter), удаляется после завершения перехода/анимации.
-
v-leave: определяет начальное состояние перехода выхода. Вступает в силу немедленно, когда запускается переход выхода, и удаляется в следующем кадре.
-
v-leave-active: определяет состояние, когда активен переход выхода. Применяется в течение всей фазы перехода при выходе, вступает в силу сразу после запуска перехода при выходе и удаляется после завершения перехода/анимации. Этот класс можно использовать для определения времени обработки, задержек и функций кривых для выходных переходов.
-
v-leave-to: Версия 2.1.8 и выше Определяет конечное состояние перехода выхода. Следующий кадр вступает в силу после того, как запущен переход leave (и одновременно удаляется v-leave), и удаляется после завершения перехода/анимации.
Я сам нарисовал жизненный цикл анимации перехода, указав: начало анимации, процесс, конец, допустимое и недопустимое имя класса.
скрыть, чтобы показать, показать, чтобы скрыть процесс
css анимация
<div>
<button @click="show = !show">show toggle</button>
<transition name="fade"> //fade 自定义名称
<p v-if="show">hello</p>
</transition>
</div>
<style>
.fade-enter-active { //类名:隐藏到显示过程所需要的时间
animation: bounce-in .5s;
}
.fade-leave-active { //类名:显示到隐藏过程所需要的时间
animation: bounce-in .5s reverse; //reverse表示和隐藏到显示动画相反
}
@keyframes bounce-in {
0% {
transform: scale(0);
}
50% {
transform: scale(1.5);
}
100% {
transform: scale(1);
}
}
</style>
Пользовательское имя класса перехода
Внедрить стороннюю библиотеку cssAnimate.css
Узнав об этом, мы можем обратиться к сторонним библиотекам для достижения этого эффекта.Animate.css
// 在index.html文件下引入Animate.css
<link href="https://cdn.jsdelivr.net/npm/animate.css@3.5.1" rel="stylesheet" type="text/css">
// 在组件内
<div>
<button @click="show = !show">show toggle</button>
<transition
enter-active-class="animated tada"
leave-active-class="animated bounceOutRight" >
<p v-if="show">hello</p>
</transition>
</div>
Если вы сталкивались с анимацией CSS, у вас может возникнуть проблема.Если время перехода и время анимации CSS несовместимы, то это время следует использовать в качестве стандарта.
Итак, вводится следующий вопрос Затем вам нужно использовать атрибут type и установить анимацию или переход, чтобы явно объявить тип, который вы хотите, чтобы Vue прослушивал.
Также можно установить явную продолжительность перехода
<transition :duration="{ enter: 500, leave: 800 }">...</transition> //以毫秒计算
Используя этот метод, Vue может автоматически получить время завершения эффекта перехода. По умолчанию Vue будет ждать своего первого события transitionend или animationend в корневом элементе эффекта перехода. Однако его можно установить и по-другому — например, у нас может быть хорошо поставленная серия переходов, в которой некоторые вложенные внутренние элементы имеют задержанные или более длинные переходы, чем корневой элемент перехода.