vue 动画

如果想在页面初始化时渲染动画效果,此时需要用到appear呈现属性和appear-active-class呈现过渡属性,语法如下
在这里插入图片描述

过渡+动画

如果想在元素过渡的同时添加动画效果,此时又需要用到enter-active-class和leave-active-class属性

步骤

1、添加过渡类名+动画名,这里为了方便查看效果,我将动画改为swing抖动
2、设置transition过渡属性值

在这里插入图片描述
在这里插入图片描述

一般为了效果执行完毕,时长以较长的为准,所以这里以过渡时长transition为准,此时需要添加type属性,语法如下

type=”transition”

在这里插入图片描述
除此之外,也可以以@keyframes动画时长为准,语法如下
type=”animation”
在这里插入图片描述

自定义时长

除了使用transition标签元素的type属性去指定时长外,也可以自定义时长,此时需要用到duration延迟属性,如法如下

在这里插入图片描述

入场时长+出场时长
除了统一设定时长外,也可以分开设置入场+出场时长,如下所示

在这里插入图片描述

注意:duration延时属性,如果想识别后面的表达式,需要利用v-bind动态绑定该属性,否则会报错。

动画钩子分类

在这里插入图片描述

入场钩子

首先新建个普通组件,可以实现简单显隐切换

在这里插入图片描述

(1)入场钩子before-enter进入过渡前状态

在这里插入图片描述

(2)入场钩子enter过渡进入完成时状态
语法:
enter钩子和before-enter稍微有些差异,before-enter会接受两个参数,语法为enter(el,done),done为回调函数
触发时机:
当before-enter触发完毕后的下一帧,将会真正运行动画效果,整个动画效果也将放到enter这个钩子阶段。

案例:2s后元素字体颜色变绿
在这里插入图片描述
在这里插入图片描述

done回调函数:
当动画执行结束后需要手动去调用done回调函数,告诉vue动画执行完毕,至此才可以进行下一步操作,代码如下所示

在这里插入图片描述

(3)入场钩子after-enter过渡完成后
执行时机:
在enter过渡进入完成后触发done()回调函数,告知vue动画执行完毕,下一步执行after-enter过渡完成后钩子函数。
要求:过渡完成后字体变黑

在这里插入图片描述

(4)入场钩子enter-cancelled过渡被打断在这里插入图片描述
上面的钩子函数中可以进行任何你想做的DOM操作。

Vue+Velocity.js

接下来结合具体案例来介绍下Vue+Velocity.js实现相关动效

(1)引入Velocity.js文件
在这里插入图片描述
(2)接下来清除原先动画钩子创建的自定义动画,开始使用Velocity.js实现特效,代码重置如下所示。
在这里插入图片描述
(3)结合动画钩子,设定入场前透明度为0,如下所示
在这里插入图片描述
(4)入场前为0,动画开始执行到enter阶段时,希望透明度由0慢慢变为1,即设置入场动画过程透明度为1,结合Velocity.js代码库,代码如下所示
在这里插入图片描述
(5)complete完结属性
目前为止,测试后发现可以出现效果,但是存在BUG…
在这里插入图片描述

多元素过渡

(1)利用条件编译指令v-if与v-else实现多元素内容切换.
在这里插入图片描述
(2)接下来在内容切换基础上,添加过渡动画,例如渐隐渐现效果
1、transition添加name属性命名
2、设置过渡状态
在这里插入图片描述
(3)状态管理
测试后发现并没有过渡效果,分析原因Vue在多个元素切换过程中会尽量复用DOM,如果不加key,那么vue会选择复用节点(Vue的就地更新策略),导致之前节点的状态被保留下来,由此产生一系列的bug.。
方案:给多元素添加不同key进行状态管理,代码如下
在这里插入图片描述

多组件过渡

多组件实现过渡效果,代码如下,直接将多元素修改为多组件即可

多组件过渡也可以结合动态组件进行操作,首先写个基础动态组件案例,如下所示
在这里插入图片描述
接下来添加transition过渡
在这里插入图片描述

列表过渡

目前为止,仅仅实现了单个&&多个元素、单个&&多个组件的过渡动画,接下来介绍下针对列表增删时做的一些过渡动
画操作。

(1)首先将基础架构搭建好,要求点击按钮时添加新内容到列表尾部
在这里插入图片描述
(2)目前为止已经实现点击添加效果,如下所示

列表过渡动画标签
(1)对于列表过渡需要用到列表过渡标签transition-group
(2)定义CSS过渡效果

动画封装

如果部分效果在页面里应用较多,可以对其进行动画封装,以方便日后调用

(1)首先创建基础动画,即简单的显隐切换动画
(2)封装动画组件
(3)调用组件
组件内部为了响应slot插槽,所以需要填入对应DOM元素,同时传入参数
(4)改良版—JS动画
动画的封装不仅可以使用CSS实现,同时也可以借助动画钩子,使用JS实现动画效果。
即将如下的CSS动画代码也封装到组件里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值