4 min read
•Question 19 of 37mediumHow do Transitions work in Vue?
Animating elements entering and leaving.
What You'll Learn
- Transition component
- CSS transitions
- JavaScript hooks
Basic Transition
code.txtVUE
<template>
<button @click="show = !show">Toggle</button>
<Transition name="fade">
<p v-if="show">Hello</p>
</Transition>
</template>
<style>
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s ease;
}
.fade-enter-from,
.fade-leave-to {
opacity: 0;
}
</style>Transition Classes
code.jsJavaScript
v-enter-from → v-enter-active → v-enter-to
v-leave-from → v-leave-active → v-leave-toTransitionGroup for Lists
code.txtVUE
<TransitionGroup name="list" tag="ul">
<li v-for="item in items" :key="item.id">
{{ item.text }}
</li>
</TransitionGroup>
<style>
.list-enter-active,
.list-leave-active {
transition: all 0.5s ease;
}
.list-enter-from,
.list-leave-to {
opacity: 0;
transform: translateX(30px);
}
</style>JavaScript Hooks
code.txtVUE
<Transition
@before-enter="onBeforeEnter"
@enter="onEnter"
@leave="onLeave"
>
...
</Transition>