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属性设置节点在初始渲染时的过渡效果

  1. 同样可以定义自定义类名

    appear-class

    appear-to-class

    appear-active-class

  2. 通过可以定义JavaScript中的钩子函数

    before-appear

    appear

    after-appear

    appear-cancelled

  3. 为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相关(过渡动画)的更多相关文章

  1. VUE:过渡&动画

    VUE:过渡&动画 vue动画的理解 1)操作css的 trasition 或 animation 2)vue会给目标元素添加/移除特定的class 3)过渡的相关类名 xxx-enter-a ...

  2. vue的过渡动画在除了chrome浏览器外的浏览器下不正常的问题

    为过渡动画添加mode="out-in"在其它浏览器下面就能正常的使用了

  3. vue.js 过渡&动画

    9-17 在add ,update, remove DOM时 提供多种方式的应用过度效果. 包括以下可选工具:(2大类,css和js) 在css过度和动画中自动应用class 配合使用第三方css动画 ...

  4. Vue过渡动画—Vue学习笔记

    要求:要通过Vue使用过渡动画我们要把需要过度的元素放在<transition name='变量名'></transition>中. 原理:通过在特定的时刻增加/移除样式实现. ...

  5. Vue过渡动画运用transition

    vue的过渡动画,主要是transition标签的使用,配合css动画实现的.官方文档css过渡 通过点击事件来切换show的值来改变显示的文本,下面的css通过进入离开时的在匀速状态下xxs(秒)下 ...

  6. Vue使用过渡类名实现动画和自定义前缀

    Vue使用过渡类名实现动画和自定义前缀 1.效果演示 2.相关代码 <!DOCTYPE html> <html lang="en"> <head> ...

  7. Vue.js 第3章 axios&Vue过渡动画

    promise 它将我们从回调地狱中解脱出来 创建和使用 var fs = require('fs') // 创建promise // reslove表示执行成功后调用的回调函数 // reject表 ...

  8. (学习心路历程)Vue过渡/动画 VS. 过渡/动画

    [此篇为本人的个人见解和哔哔赖赖,如果有观点不对的地方,还请大家指出来哇!!] 最近实习在做一个项目,里面应用的动画效果还蛮复杂的,因为本身对Vue框架比较熟悉,所以最终选择了Vue框架. 自己之前从 ...

  9. vue过渡动画

    概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animate.c ...

随机推荐

  1. 整合微信小程序的Web API接口层的架构设计

    在我前面有很多篇随笔介绍了Web API 接口层的架构设计,以及对微信公众号.企业号.小程序等模块的分类划分.例如在<C#开发微信门户及应用(43)--微信各个项目模块的定义和相互关系>介 ...

  2. ES6 变量、常量声明总结

    较之前ES5,新颁布在声明上有改变 一.var  对比  let 1.作用域不同 let只在命令所在的代码块 {} 里有效 ES5只有全局作用域和函数作用域,没有块级作用域,带来很多不合理的场景,比如 ...

  3. nodeJS实现路由功能

    前面的话 本文将使用NodeJS实现较复杂应用的路由功能 结构 项目结构如下 代码如下 功能 [router.js] // 加载所需模块 var http = require('http'); var ...

  4. 关于在HTML中使用的script标签

    本文是<JavaScript高级程序设计>(第三版)中的第二章的个人学习的总结. 在HTML中使用JavaScript <script>标签 在HTML5中script主要有以 ...

  5. [补档][HNOI 2008]GT考试

    [HNOI 2008]GT考试 题目 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字. 他的不吉利数学A1A2... ...

  6. 1. 数字根(Digital Root)

    数字根(Digital Root)就是把一个自然数的各位数字相加,再将所得数的各位数字相加,直到所得数为一位数字为止.而这个一位数便是原来数字的数字根.例如: 198的数字根为9(1+9+8=18,1 ...

  7. mbos之动态图表设计

    前言 所谓,一图胜千言.人脑有80%的部分专门用于视觉处理.而随着数据时代的全面来临,我们自然有必要将数据转化为图形与图表. Mbos是一个快速,稳定的云端轻应用开发平台.帮助企业快速开发移动应用,加 ...

  8. 求m区间内的最小值

    洛谷P1440 求m区间内的最小值 ............................................................................... 以上 ...

  9. 关于Spring总结

    关于Spring总结 Spring引入 传统的基于mvc的项目框架结构:Entity / dao / service / action 简单用户访问流程:/user.action ----> T ...

  10. python——内置函数和匿名函数

    内置函数 接下来,我们就一起来看看python里的内置函数.截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就是python提供给你直接可以拿来使用的所有函数.这 ...