一个有趣的,跨浏览器的 css3 动画库。
Animate.css
安装
npm install animate.css --save
main.js中引用。
import animate from 'animate.css' Vue.use(animate)
使用
- 方式一:HTML标签中添加class。缺点:页面加载后就开始
- 方式二:HTML标签中添加class,但是绑定vue变量,由变量状态控制动画的播放
- 方式三:元素添加动画,跟普通关键帧动画
@keyframes
一样使用 - 更多使用方法,参考官网
方式一
HTML标签中添加class,animate__animated加上动画效果class。例如要使用弹跳动画animate__bounce,正确的写法如下:
1 |
<h1 class="animate__animated animate__bounce">bounce弹跳动画</h1> |
方式二
HTML标签中添加class,但是绑定vue变量,由变量状态控制动画的播放。例如要使用水平抖动动画animate__shakeX,在点击元素时触发动画。
1.元素中绑定class与vue变量(也是必须包含animate__animated)。点击事件触发函数shake,并将变量isShakeForm作为参数
1 |
//当变量isShakeForm中的isActive为true时,应用水平抖动动画。 |
2.vue中定义变量
1 |
isShakeBtn: {isActive:false}, //是否启用 登录按钮 摇晃动画 |
3.编写函数shake
1 |
shake(shakeEl) { //触发 动画 |
方式三
元素添加动画,跟普通关键帧动画@keyframes
一样使用。不需要包含animate__animated,且没有前缀animate__
1 |
.el-avatar:hover { |
动画class
获取动画class名。打开官网,右侧栏是动画列表,点击相应的动画名可以在中间看到动画效果,点击右侧复制按钮可复制动画class名(包含了前缀的)。
速度
动画速度修改(修改动画持续时间)
1 |
//方式一:class中添加 animate__duration-2s |
案例
页面切换,Animate动画的应用:
1.准备
在main.js文件中,定义
$goback()
函数$to()
函数- vuex变量animate
App.vue文件中,设置
- watch,监听路由变化
- 添加Animate动画结束监听器
- 动画全局样式(过渡时间,或者说动画速度)
main.js文件
定义$goback()
函数:
$goback()
函数接收一个参数,下一个页面的名称(vue-router中定义的name)。
1 |
//返回上一个页面 |
扩展:
1 |
//返回上一个页面 |
定义$goto()
函数:
$goto()
函数接收一个参数,与上边$goback()
函数相同。
1 |
//前往下一个页面 |
定义vuex变量animate:
1 |
import Vue from 'vue' |
App.vue文件
App.vue文件中,设置
- watch,监听路由变化
- 添加Animate动画结束监听器
- 动画全局样式(过渡时间,或者说动画速度)
监听路由变化:
1 |
//获取路由中携带的动画信息并更新到vuex的animate |
添加动画监听器:
1 |
//App.vue中的created中添加监听器 |
动画全局样式:
1 |
//全局Animate动画样式 |
2.使用
在要应用切换动画的页面,根元素使用v-bind绑定vuex中的animate(动画效果),跳转到该页面时(返回到此页、跳转到下一页,此页为下一页)使用上边定义的$goback()、$goto()
函数,其它情况(不想应用切换动画、平级页面之间的跳转等)则使用this.$router.push()
来跳转即可。
1 |
//页面 根元素 绑定vuex中的animate(动画效果) |