前端必知必会-Vue动画Animations `<Transition>` 组件


<Transition> 组件

当我们想要在应用程序中删除或添加元素时使用 v-if 或 v-show 来制作动画时,Vue 为我们提供了内置的<Transition> 组件,因为使用普通的 CSS 动画很难做到这一点。

让我们首先创建一个应用程序,其中一个按钮可以添加或删除

标签:

示例
App.vue:

<template>
<h1>添加/删除 <p> 标签</h1>
<button @click="this.exists = !this.exists">{
   
   {btnText}></button><br>
<p v-if="exists">Hello World!</p>
</template>

<script>
export default {
      
      
data() {
      
      
return {
      
      
exist: false
}
},
computed: {
      
      
btnText() {
      
      
if(this.exists) {
      
      
return 'Remove';
}
else {
      
      
return 'Add';
}
}
}
}
</script>

<style>
p {
      
      
background-color: lightgreen;
display: inline-block;
padding: 10px;
}
</style>

现在让我们将 <Transition> 组件包裹在 <p> 标签周围,看看如何为 <p> 标签的移除制作动画。

当我们使用 <Transition> 组件时,我们会自动获得六个不同的 CSS 类,我们可以使用这些类在添加或移除元素时制作动画。

在下面的示例中,我们将使用自动可用的类 v-leave-from 和 v-leave-to 在删除 <p> 标签时制作淡出动画:

示例
App.vue:

<template>
<h1>添加/删除 <p> 标签</h1>
<button @click="this.exists = !this.exists">{
   
   {btnText}></button><br>
<Transition>
<p v-if="exists">Hello World!</p>
</Transition>
</template>

<script>
export default {
      
      
data() {
      
      
return {
      
      
exist: false
}
},
computed: {
      
      
btnText() {
      
      
if(this.exists) {
      
      
return 'Remove';
}
else {
      
      
return 'Add';
}
}
}
}
</script>

<style>
.v-leave-from {
      
      
opacity: 1;
}
.v-leave-to {
      
      
opacity: 0;
}
p {
      
      
background-color: lightgreen;
display: inline-block;
padding: 10px;
transition: opacity 0.5s;
}
</style>

总结

本文介绍了Vue <Transition> 组件的使用,如有问题欢迎私信和评论