vue3动画组件transition基础使用

134 阅读1分钟
  • transition 使用
<template>
  <div>transition用法</div>
  <el-button @click="changButton">点击切换动画</el-button>
  <transition
    name="fade"
    @before-enter="beforeEnter"
    @enter="enter"
    @after-enter="afterEnter"
    @enter-cancelled="enterCancelled"
    @before-leave="beforeLeave"
    @leave="leave"
    @after-leave="afterLeave"
    @leave-cancelled="leaveCancelled"
  >
    <div v-if="active" class="center">需要动画的组件</div>
  </transition>
</template>

<script setup>
import { ref } from 'vue';
import temp01 from '../components/temp/temp01.vue';
import temp02 from '../components/temp/temp02.vue';

const active = ref(true);
const changButton = (value) => {
  active.value = !active.value;
};

const beforeEnter = (value) => {
  console.log('beforeEnter', '1');
};
const enter = (value) => {
  console.log('enter', '2');
};
const afterEnter = (value) => {
  console.log('afterEnter', '3');
};
const enterCancelled = (value) => {
  console.log('enterCancelled', '4');
};
const beforeLeave = (value) => {
  console.log('beforeLeave', '5');
};
const leave = (value) => {
  console.log('leave', '6');
};
const afterLeave = (value) => {
  console.log('afterLeave', '7');
};
const leaveCancelled = (value) => {
  console.log('leaveCancelled', '8');
};
</script>

<style scoped>
.center {
  width: 140px;
  height: 140px;
  line-height: 140px;
  border-radius: 100%;
  background: #79bbff;
}
/* #transition过渡 class
在进入/离开的过渡中,会有 6 个 class 切换。

v-enter-from:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。

v-enter-active:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。

v-enter-to:定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter-from 被移除),在过渡/动画完成之后移除。

v-leave-from:定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。

v-leave-active:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。

v-leave-to:离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave-from 被移除),在过渡/动画完成之后移除。 */

/* 展现 */
.fade-enter-from {
  width: 100px;
  opacity: 0;
}
.fade-enter-active {
  transition: all 1s;
}
.fade-enter-to {
  width: 140px;
  opacity: 1;
}

/* 消失 */
.fade-leave-from {
  width: 140px;
  opacity: 1;
}
.fade-leave-active {
  transition: all 1s;
}
.fade-leave-to {
  width: 100px;
  opacity: 0;
}
</style>

版权声明:本文为CSDN博主「小满zs」的原创文章 原文链接:blog.csdn.net/qq119556631…