跳到主要内容

Transition

  • <Transition> for applying animations when an element or component is entering and leaving the DOM. This is covered on this page
  • <TransitionGroup> for applying animations when an element or component is inserted into, removed from, or moved within a v-for list

The <Transition> Component

<button @click="show = !show">Toggle</button>
<Transition>
<p v-if="show">hello</p>
</Transition>
/* we will explain what these classes do next! */
.v-enter-active,
.v-leave-active {
transition: opacity 0.5s ease;
}

.v-enter-from,
.v-leave-to {
opacity: 0;
}

CSS-Based Transitions

Transition Classes

Named Transitions

<Transition name="fade">
...
</Transition>
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s ease;
}

.fade-enter-from,
.fade-leave-to {
opacity: 0;
}

Reusable Transitions

<!-- MyTransition.vue -->
<script>
// JavaScript hooks logic...
</script>

<template>
<!-- wrap the built-in Transition component -->
<Transition
name="my-transition"
@enter="onEnter"
@leave="onLeave">
<slot></slot> <!-- pass down slot content -->
</Transition>
</template>

<style>
/*
Necessary CSS...
Note: avoid using <style scoped> here since it
does not apply to slot content.
*/
</style>