1. 简介

Vue 在插入、更新或移除 DOM 时,提供多种不同方式的过渡效果,并提供 transition 组件来实现动画效果(用 transition 组件将需执行过渡效果的元素包裹)

语法:<transition name=””>元素或组件(进入或离开时会有动画效果)</transition>

name 属性是执行动画效果的 css 类名,与6个 css 类产生关联:

假设 transition 的 name为v,transition 组件会自动在不同时机添加如下6个类:

  • v-enter:定义过渡开始状态的样式
  • v-enter-active:定义过渡的状态,该类常被用来定义过渡的过程时间、延迟、曲线函数。
  • v-enter-to:定义过渡结束状态的样式(vue 2.1.8以上版本)
  • v-leave:定义离开之前的样式
  • v-leave-active:定义从0到1过程中的样式
  • v-leave-to:定义到达目的地之后的效果

2. 执行动画的情况

动画只在2个节点发生:

  • 进入:从不显示到显示(v-show),从无到有。
  • 离开:从显示到不显示(v-show),从有到无。

条件渲染(使用v-if):根据条件控制元素添加、删除

条件展示(使用v-show):根据条件控制元素显示、隐藏

动态组件(使用:is):多个组件切换(涉及到组件显示、隐藏)

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title></title><script type="text/javascript" src="vue.js"></script>    <style type="text/css">.v-enter{opacity: 0}.v-enter-to{opacity: 1}.v-enter-active{transition: all 1s}.v-leave{opacity: 1}.v-leave-to{opacity: 0}.v-leave-active{transition:all 1s}</style>
</head>
<body><div id="app"><div class="title"><h3 @click="isshow=!isshow">标题</h3></div><transition name="v"><div class="content" v-show="isshow"><p>内容</p></div></transition></div><script type="text/javascript">let app = new Vue({el:"#app",data:{isshow:true}})    app.$mount('#app')</script>
</body>
</html>

可将<style>中的内容简化为:

<style type="text/css">.v-enter,.v-leave-to{opacity: 0}.v-enter-active,.v-leave-active{transition: all 1s}
</style>

3. transition-group

  • 若给一个元素绑定动画效果,使用<transition>组件
  • 若给多个元素绑定动画效果,使用<transition-group>组件

为了区分元素列表,需要给子元素增加:key属性,表示每个子元素的索引

语法:<transition-group name=””> <元素1 :key=””></元素1> <元素2 :key=””></元素2> </transition-group>

4. 内置 css 类实现过渡

除在 transition 组件上增加 name 属性,来实现动画效果外,Vue还提供6个内置的类,可直接在transition组件上使用(为了兼容 animate.css 框架)

https://daneden.github.io/animate.css/

  • enter-class:相当于.v-enter
  • enter-active-class:相当于.v-enter-active
  • enter-to-class:(2.1.8之后)
  • leave-class
  • leave-active-class
  • leave-to-class:(2.1.8之后)

例:结合vue.js和animate.css动画框架实现一些动态效果

注:无需指定开始、结束状态时的css样式(animate.css中已指定)

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title></title><link rel="stylesheet" type="text/css" href="animate.css"><script type="text/javascript" src="vue.js"></script>    <style type="text/css">.dialog{width: 300px;height: 300px;background: #333;color: #fff;}</style>
</head>
<body><div id="app"><button @click="isshow=!isshow">按钮</button><transition enter-active-class="animated bounceInDown" leave-active-class="animated bounceOutUp"><div class="dialog" v-show="isshow">内容</div></transition></div><script type="text/javascript">let app = new Vue({el:"#app",data:{isshow:false}})            </script>
</body>
</html>

5. 钩子函数实现过渡

先指定不同阶段执行的js函数,在该函数中实现该阶段的css动画(通常结合 velocity.js、move.js 等JavaScript动画框架实现)。在钩子函数中,会自动将执行过渡效果的元素传递到钩子函数中。

语法:

<transitionv-on:before-enter=”beforeEnter”v-on:enter=”enter”v-on:after-enter=”afterEnter”v-on:enter-cancelled=”enterCancelled”v-on:before-leave=”beforeLeave”v-on:leave=”leave”v-on:after-leave=”afterLeave”v-on:leave-cancelled=”leaveCancelled”>
</transition>

例子:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title></title><script src="https://cdn.jsdelivr.net/npm/velocity-animate@1.5.0/velocity.min.js"></script><script type="text/javascript" src="vue.js"></script>    <style type="text/css">.dialog{width: 300px;height: 300px;background: #333;color: #fff;}</style>
</head>
<body><div id="app"><button @click="isshow=!isshow">按钮</button><transition v-on:before-enter="beforeEnter" v-on:enter="Enter"><div class="dialog" v-show="isshow">内容</div></transition></div><script type="text/javascript">let app = new Vue({el:"#app",data:{isshow:false},methods:{beforeEnter(el){el.style.opacity = 0;},Enter(el){Velocity(el,{opacity:1,fontSize:"2em"},{duration:1000})Velocity(el,{backgroundColor:"#666"})}}})            </script>
</body>
</html>

更多专业前端知识,请上 【猿2048】www.mk2048.com

Vue.js 相关知识(动画)相关推荐

  1. 结合Vue的相关知识进行温度转换

    温度转换 一.知识基础 二.代码 三.效果 一.知识基础 结合Vue的相关知识进行温度转换. 不仅可以进行温度转换,还可以进行其他单位的转换. 二.代码 <html><head> ...

  2. vue/js 相关网站导读

    说明,点击标题可以跳转,我知道你不想复制网页.(哈哈哈哈) 一.vue 官网 vue2    https://v2.cn.vuejs.org/ vue3   Vue.js - 渐进式 JavaScri ...

  3. Vue.js基础知识

    一.Vue.js是什么? 它是一套用于构建用户界面的渐进式框架.其设计为自底向上逐层应用.Vue只关心视图层. 二.声明式的渲染 1. Vue.js的核心是采用简洁的模板语法来声明式地将数据渲染到DO ...

  4. vue.js基础知识篇(5):过渡、Method和Vue实例方法

    第8章:过渡 1.CSS过渡 2.JavaScript过渡 3.渐进过渡 第9章:method Vue.js的事件一般通过v-on指令配置在HTML中,虽然也可以在js的代码中使用原生的addEven ...

  5. vue.js基础知识篇(4):过滤器、class与style的绑定2

    代码下载:网盘 欢迎私信 第一章:过滤器 过滤器是对数据进行处理并返回结果的函数. 1.语法 语法是使用管道符"|"进行连接.过滤器可以接收参数,跟在过滤器后面,带引号的参数被当做 ...

  6. vue.js基础知识篇(1):简介、数据绑定

    目录第一章:vue.js是什么? 第二章:数据绑定第三章:指令第四章:计算属性第五章:表单控件绑定代码链接: http://pan.baidu.com/s/1qXCfzRI 密码: 5j79 第一章: ...

  7. 常看:vue面试相关知识

    部分概念 DOM 操作本身应该是同步的(当然,我说的是单纯的 DOM 操作,不考虑 ajax 请求后渲染等). DOM 操作之后导致的渲染等是异步的(在 DOM 操作简单的情况下,是难以察觉的). C ...

  8. Vue.js中的动画

    Vue中的动画 为什么要有动画:动画能够提高用户的体验,帮助用户更好的理解页面中的功能: 使用过渡类名 HTML结构: <div id="app"><input ...

  9. JS相关知识总结(一)

    总结下这段时间吸收的许多小知识,以备忘记后翻阅. 关于面向对象 面向对象特征: 具有唯一标识性 具有状态 具有行为 JS的面向对象和JAVA的实现思路不一样,JS是基于原型并非基于类.但是JS为了看起 ...

最新文章

  1. 37 windows_37_Thread_InterLock 线程-原子锁
  2. Innodb表压缩过程中遇到的坑(innodb_file_format) - billy鹏
  3. SPRING多个占位符配置文件解析源码研究--转
  4. python绘制基因结构图_从 gff 到 gggenes 绘制基因结构图
  5. 开机后能解锁吗_黔隆科技刷机教程360奇酷Q5PLUS(1509A00)忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
  6. 关系数据库的查询建表
  7. 【Linux】Vi中的各种命令
  8. 程序员必备算法——算法相关链接总结
  9. Android之崩溃日志本地存储与远程保存
  10. 三星s9 android p内测,三星国行Galaxy S9/S9+用户安卓9.0内测:更新One UI
  11. 卷积神经网络python实例,python卷积神经网络图像
  12. 单片机控制舵机及步进电机
  13. 空气质量等级c语言编程,字节跳动2018秋招编程题——空气质量
  14. java 设置纸张大小设置_Java读取打印机自定义纸张.
  15. 微信小程序开发手账从入门到部署【持续更新】
  16. 原子战舰与8266代码理解(while循环后直接加分号)
  17. 常用非线性优化算法总结
  18. 关于使用quartz动态增删改定时任务
  19. Unity 游戏的String interning优化
  20. 百度云虚拟机访问项目404

热门文章

  1. C语言与JAVA内存管理_C语言内存管理
  2. 【超级鼠标键盘锁】项目工程下载地址
  3. 矩阵论期末手写总结笔记
  4. 块内拉升lisp_求大神告知,如何用LISP实现块数量分类统计程序,最好统计后列出表格。谢谢了。...
  5. security放行 spirng_Spring Security配置
  6. gunicorn部署Flask服务
  7. HBase错误:ERROR: Can't get master address from ZooKeeper; znode data == null 解决办法
  8. 转收藏:Git常用命令速查表
  9. 数据仓库建设中的数据建模方法(转)
  10. linq 解决winForm中控件CheckedListBox操作的问题。(转载)