Vue transition 动画组件
在下列情形中,可以给任何元素和组件添加进入/离开过渡:
- 条件渲染 (使用
v-if
) - 条件展示 (使用
v-show
) - 动态组件
- 组件根节点
1. 基本使用
自定义 transition 过渡效果,你需要对 transition
组件的 name
属性自定义,并在 css 中写入对应的样式。在进入/离开的过渡中,会有 6 个 class 切换
<template>
<button @click='flag = !flag'>切换</button>
<transition name='fade'>
<div v-if='flag' class="box"></div>
</transition>
</template>
<style>
//开始过渡
.fade-enter-from{
background:red;
width:0px;
height:0px;
transform:rotate(360deg)
}
//开始过渡了
.fade-enter-active{
transition: all 2.5s linear;
}
//过渡完成
.fade-enter-to{
background:yellow;
width:200px;
height:200px;
}
//离开的过渡
.fade-leave-from{
width:200px;
height:200px;
transform:rotate(360deg)
}
//离开中过渡
.fade-leave-active{
transition: all 1s linear;
}
//离开完成
.fade-leave-to{
width:0px;
height:0px;
}
</style>
2. 自定义过渡 class 类名与过渡时间
作用:结合第三方动画库使用
设置过渡 class 类名
一共可以设置 6 个类名:
enter-from-class
enter-active-class
enter-to-class
leave-from-class
leave-active-class
leave-to-class
<template>
<transition
leave-active-class="animate__animated animate__bounceInLeft"
enter-active-class="animate__animated animate__bounceInRight"
>
<div v-if="flag" class="box"></div>
</transition>
</template>
设置过渡时间
<transition :duration="1000">...</transition>
<!-- 分别指定进入和离开的持续时间 -->
<transition :duration="{ enter: 500, leave: 800 }">...</transition>
3. transition
生命周期钩子
动画实现过程中向外抛出的事件
可以结合 gsap
动画库使用 GreenSock
<template>
<transition
@before-enter="beforeEnter" <!--对应 enter-from-->
@enter="enter" <!-- 对应 enter-active-->
@after-enter="afterEnter" <!-- 对应 enter-to-->
@enter-cancelled="enterCancelled" <!-- 显示过渡打断-->
@before-leave="beforeLeave" <!-- 对应 leave-from-->
@leave="leave" <!-- 对应 enter-active-->
@after-leave="afterLeave" <!-- 对应 leave-to-->
@leave-cancelled="leaveCancelled" <!-- 离开过渡打断-->
>
...
</transition>
</template>
<script lang="ts" setup>
// import gsap from "gsap"
const beforeEnter = (el: Element) => {
console.log('进入之前 from', el);
}
const Enter = (el: Element,done:Function) => {
console.log('过度曲线');
setTimeout(()=>{
done()
},3000)
}
const AfterEnter = (el: Element) => {
console.log('to');
}
</script>
注意:当只用 JavaScript 过渡的时候,在 enter
和 leave
钩子中必须使用 done
进行回调
4. appear
页面加载完立刻显示动画
通过这个属性可以设置初始节点过渡,就是页面加载完成就开始动画,对应三个状态
<template>
<transition
appear
appear-active-class="from"
appear-from-class="active"
appear-to-class="to"
>
<div v-if='flag' class="box"></div>
</transition>
</template>
<style>
.box {
width: 200px;
height: 200px;
}
.from {
width: 0;
height: 0;
}
.active {
transition: all .3s ease
}
.to {
width: 200px;
height: 200px;
}
</style>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Vue keep-alive 缓存组件
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论