Vue相关(过渡动画)
Vue 过渡 && 动画
一、CSS过渡
1.transition标签可以用来封装需要过渡的元素,添加entering/leaving 过渡,
条件是:
(1)使用条件渲染语句 v-if/v-show
(2)动态组件
(3)组件根节点
通过style标签设置过渡动画时需要为transition指定name属性,当指定了name属性之后,
vue会自动去找几个过渡动画需要的类
active类中一般放过渡属性,例如transition,animation等,放animation需要指定动画关键帧
(v-是这些类名的前缀,会被替换为transition中name属性)
v-enter-active(进入中,过渡状态)
v-enter(进入之前,开始过渡状态)
v-enter-to(进入结束,开始过渡的结束状态) 一般不用
v-leave-active(离开中,过渡状态)
v-leave(离开前,离开过渡状态)
v-leave-to(离开结束,离开过渡的结束状态) 一般不用
二、CSS动画
1.CSS动画同CSS过渡,也需要四个类,active类中放的是animation,需要指定关键帧,关键帧使用transform定义动画状态,当设置了transition的name属性之后,vue会自动去探测是否存在这几个类,如果有,就执行了类中的动画
2.自定义动画,通常用于和第三方动画库相结合
<transition
enter-active-class="animated tada"
leave-active-class="animated bounceOutRight"
>
<p v-if="show">hello</p>
</transition>
为transition标签设置以下几个属性来指定动画需要的类,这几个类的优先级高于普通类,与第三方动画库相结合时十分有用
(1)enter-active-class
(2)enter-class
(3)enter-to-class
(4)leave-active-class
(5)leave-class
(6)leave-to-class
三、使用钩子函数设置动画
可以通过在transition标签中绑定钩子函数来设置过渡动画,几个钩子函数如下:
钩子函数 | 对应的参数 |
---|---|
before-enter | (el) |
enter | (el,done) |
after-enter | (el) |
enter-cancelled | (el) |
before-leave | (el) |
leave | (el,done) |
after-leave | (el) |
leave-cancelled | (el) |
通常在before-enter或before-leave中指定状态,在enter或leave函数中执行动画
beforeEnter: function (el) {
// 进入之前
$(el).css({
opacity: 0,
color: 'red',
});
},
enter: function (el, done) {
// 第一种
$(el).animate({
opacity:1,
},3000,function(){
//需要在动画执行完毕的回调函数中调用done
done();
})
// 第二种
$(el).fadeIn(1000,()=>{
done();
})
// 第三种 引入velocity动画库
<script src="https://cdnjs.cloudflare.com/ajax/libs/velocity/1.2.3/velocity.min.js"></script>
Velocity(el, {opacity: 1, translateX: '20px', fontSize: '2em'}, {duration: 300});
Velocity(el, {translateX: '0px', fontSize: '1em'}, {complete: done})
},
当只用 JavaScript 过渡的时候, 在 enter 和 leave 中,回调函数 done 是必须的 。 否则,它们会被同步调用,过渡会立即完成。
四、初始渲染的过渡
通过为transition标签添加appear属性设置节点在初始渲染时的过渡效果
同样可以定义自定义类名
appear-class
appear-to-class
appear-active-class通过可以定义JavaScript中的钩子函数
before-appear
appear
after-appear
appear-cancelled为transiton设置appear属性,如果没有对应的过渡类或者钩子函数会默认去执行before-enter,和enter钩子函数的内容
五、多元素的过渡
注意相同标签切换需要设置key属性:
当有相同标签名的元素切换时,需要通过 key 特性设置唯一的值来标记以让 Vue 区分它们,否则 Vue 为了效率只会替换相同标签内部的内容
transition标签内部最外部根节点只能有一个,但通过v-if,v-else-if,v-else设置切换时候可以有多个跟标签
六、过渡模式
为transition标签设置mode属性
(1)in-out:新元素先进行过渡,完成之后当前元素过渡离开
(2)out-in:当前元素先进行过渡,完成之后新元素过渡进入
七、多组件过渡
使用v-bind:is属性为保留组件component来指定要渲染成哪个组件
<transition name="component-fade" mode="out-in">
<component v-bind:is="view"></component>
</transition>
八、列表过渡
使用tranistio-group标签来为多个节点设置过渡
tranistio-group标签默认渲染成span标签,可通过为其设置tag="div"属性将其渲染成div
tranistio-group内部元素总是需要 提供唯一的 key 属性值
九、列表位移过渡
transition-group标签添加v-move属性定义元素位置改变时使用的动画,同进入和离开动画一样,v会被替换成transition-group便签的name属性,也可以通过move-class自定义类来设置自定义位移时使用的类
当要设置离开时的位移过渡时需要设置绝对定位position:absolute
<!--filp-list为transition-group便签的name属性-->
.flip-list-move {
transition: transform 1s;
}
十、Lazy sudoku
通过tranistion-group标签设置随机数独元素的切换,注意transition-group内的每个元素的v-bind:key需要绑定的和元素相关,不然只是简单的数字替换,非元素的移动
CSS:
* {
box-sizing: border-box;
}
.box {
display: block;
margin: 0 auto;
width: 450px;
height: 450px;
}
.item {
display: inline-block;
width: 50px;
height: 50px;
line-height: 50px;
border: 1px solid #eee;
text-align: center;
color: #666;
}
.fade-move {
transition: all 0.4s linear;
}
HTML:
<div id="app">
<transition-group name="fade" class="box">
<span v-for="item in numArr" :key="item.id" class="item" :style="item.bg">{{ item.num }}</span>
</transition-group>
</div>
JavaScript
var app = new Vue({
el: '#app',
data: {
numArr: new Array(81).fill(1).map((value, index) => {
return {
num: (index % 9),
id: index,
bg:{
backgroundColor:'hsl(' + Math.floor(Math.random() * 360) + ',70% ,80%)'
}
}
}),
},
methods: {
shuffle: function () {
this.numArr.sort(function () {
return Math.random() - 0.5;
});
}
},
created: function () {
this.shuffle();
}
});
十一、可复用的过渡
将transition或者transition-group标签作为组件的根标签即可实现可复用的过渡
Vue相关(过渡动画)的更多相关文章
- VUE:过渡&动画
VUE:过渡&动画 vue动画的理解 1)操作css的 trasition 或 animation 2)vue会给目标元素添加/移除特定的class 3)过渡的相关类名 xxx-enter-a ...
- vue的过渡动画在除了chrome浏览器外的浏览器下不正常的问题
为过渡动画添加mode="out-in"在其它浏览器下面就能正常的使用了
- vue.js 过渡&动画
9-17 在add ,update, remove DOM时 提供多种方式的应用过度效果. 包括以下可选工具:(2大类,css和js) 在css过度和动画中自动应用class 配合使用第三方css动画 ...
- Vue过渡动画—Vue学习笔记
要求:要通过Vue使用过渡动画我们要把需要过度的元素放在<transition name='变量名'></transition>中. 原理:通过在特定的时刻增加/移除样式实现. ...
- Vue过渡动画运用transition
vue的过渡动画,主要是transition标签的使用,配合css动画实现的.官方文档css过渡 通过点击事件来切换show的值来改变显示的文本,下面的css通过进入离开时的在匀速状态下xxs(秒)下 ...
- Vue使用过渡类名实现动画和自定义前缀
Vue使用过渡类名实现动画和自定义前缀 1.效果演示 2.相关代码 <!DOCTYPE html> <html lang="en"> <head> ...
- Vue.js 第3章 axios&Vue过渡动画
promise 它将我们从回调地狱中解脱出来 创建和使用 var fs = require('fs') // 创建promise // reslove表示执行成功后调用的回调函数 // reject表 ...
- (学习心路历程)Vue过渡/动画 VS. 过渡/动画
[此篇为本人的个人见解和哔哔赖赖,如果有观点不对的地方,还请大家指出来哇!!] 最近实习在做一个项目,里面应用的动画效果还蛮复杂的,因为本身对Vue框架比较熟悉,所以最终选择了Vue框架. 自己之前从 ...
- vue过渡动画
概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animate.c ...
随机推荐
- (转)Java线程:新特征-条件变量
Java线程:新特征-条件变量 条件变量是Java5线程中很重要的一个概念,顾名思义,条件变量就是表示条件的一种变量.但是必须说明,这里的条件是没有实际含义的,仅仅是个标记而已,并且条件的含义往往 ...
- Unity Shader入门教程(四)反射光斑的实现
本节内容介绍PhongModel(也就是上文说的反射光的计算模型),采用的计算方法是BlinPhong(也即是用视线方向V+光源方向L的和,与N做点积,随后幂化得到高光反射系数)下图采用了csdn博文 ...
- java中方法的参数传递机制
问:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为一个 ...
- opnet仿真过程中SEED的概念问题 分类: opnet 2014-11-02 15:25 69人阅读 评论(0) 收藏
仿真配置中SEED的概念:仿真随机种子,是产生随机数的种子值,反应随机数的状态.只要选定一个种子值,整个随机事件系统就固定了,复杂仿真的随机过程就成了一次实现.目的是测试仿真系统的稳健性,具体来说,针 ...
- HDU1002——大整数加法
题目: I have a very simple problem for you. Given two integers A and B, your job is to calculate the S ...
- 用于NLP的CNN架构搬运:from keras0.x to keras2.x
本文亮点: 将用于自然语言处理的CNN架构,从keras0.3.3搬运到了keras2.x,强行练习了Sequential+Model的混合使用,具体来说,是Model里嵌套了Sequential. ...
- java垃圾回收过程
对于年轻代,刚开始创建的对象都是放置在eden区的,而将年轻代分成3个部分,主要是为了生命周期短的对象尽量留在年轻代.当eden区申请不到空间的时候,进行minorGC,把存活的对象拷贝到survio ...
- mybatis 详解(十一)------ mybatis和spring整合
想要整合mybatis和spring,那么我们首先要知道这两个框架是干嘛的,对于mybatis我们前面几篇博客已经有了很详细的介绍,我们通过加载mybatis-configuration.xml 文件 ...
- Python3+迭代器与生成器
转载Python3 迭代器与生成器 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素 ...
- sns社交系统ThinkSNS+ 更新至V0.8.2,新增圈子功能
sns社交系统"ThinkSNS+"于7月15日发布了V0.8.0,含开源版本web+H5,及Android APP和iOS APP客户端. V0.8.2版本将于7月29日(本周六 ...