Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。
包括以下几种常见的方式:

    • 在 CSS 过渡和动画中自动应用 class
    • 可以配合使用第三方 CSS 动画库,如 Animate.css
    • 在过渡钩子函数中使用 JavaScript 直接操作 DOM

附上官方的动画状态图:

说明:

  1. v-enter:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。

  2. v-enter-active:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。

  3. v-enter-to: 2.1.8版及以上 定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter 被移除),在过渡/动画完成之后移除。

  4. v-leave: 定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。

  5. v-leave-active:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。

  6. v-leave-to: 2.1.8版及以上 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave 被删除),在过渡/动画完成之后移除。

一、使用css过渡动画

css部分:

     <style>
/* v-enter 一个时间点,进入之前,元素其实状态,此时还没有进入 */
/* v-leave-to 时间点,动画离开之后,离开的种子状态,此时元素动画已经结束 */
.v-enter,
.v-leave-to
{
opacity:;
transform: translateX(150px)
}
/* v-enter-active 入场动画时间段 */
/* v-leave-active 离场动画时间段 */
.v-enter-active,
.v-leave-active{
/* 让动画有个过渡的渐变效果 */
transition:all 0.4s ease;
}

HTML部分:

     <div id="app">
<button type="button" @click="flag=!flag">切换</button> <!-- 1.使用transition标签包裹需要被动画控制得元素,vue提供 -->
<transition>
<p v-if="flag">这是个p标签</p>
</transition>
</div>

JS部分:

     var app = new Vue({
el: "#app",
data() {
return {
message: 'hello!',
flag: false,
}
},
methods: {
sayHi() {
console.log("hello");
}
}
});

当然还可以自定义v-前缀,默认使用的是vue内置的类来控制transition标签的动画。

CSS部分:

    /* 在 transition 标签中加个 name='my' 属性,可局部自定义动画 */
.my-enter,
.my-leave-to
{
opacity:;
transform: translateY(300px)
} .my-enter-active,
.my-leave-active{
/* 让动画有个过渡的渐变效果 */
transition:all 0.4s ease;
}

HTML部分:

     <button type="button" @click="flag2=!flag2">切换2</button>

     <!-- 1.使用transition标签包裹需要被动画控制得元素,vue提供,加了个 name='my' -->
<transition name="my">
<p v-if="flag2">这是个p2标签</p>
</transition>

二、使用第三方css动画库实现

引入第三方动画库

  <link rel="stylesheet" href="../lib/animate.css">

css部分不用自定义了..

HTML部分:

     <button type="button" @click="flag=!flag">切换</button>

     <!-- 使用 :duration="毫秒值" 来控制进场和离场的时长 -->
<transition
enter-active-class="bounceIn"
leave-active-class="bounceOut"
:duration="{enter:200,leave:400}">
<p v-if="flag" class="animated">这是个p2标签</p>
</transition>

JS部分:

     var app = new Vue({
el: "#app",
data() {
return {
message: 'hello!',
flag: false,
flag2: false
}
},
methods: {
sayHi() {
console.log("hello");
}
}
});

四、使用js钩子函数实现

需求:点击  【切换】 按钮,一个黄色的小球会从(0,0)位置移动到(150px,450px)位置中去然后消失。

CSS部分:

     <style>
.ball{
width:30px;
height:30px;
border-radius: 50%;
background-color: yellow;
}
</style>

HTML部分:

     <div id="app">
<button type="button" @click="flag=!flag">切换</button> <transition @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter">
<div v-if="flag" class="ball"></div>
</transition>
</div>

JS部分:

     var app = new Vue({
el: "#app",
data() {
return {
flag: false,
}
},
methods: {
beforeEnter(el) {
console.log("beforeEnter")
el.style.transform = "translate(0,0)";
},
enter(el, done) { console.log("enter")
// 强制动画的使用
el.offsetWidth
el.style.transform = "translate(150px,450px)"
el.style.transition = "all 1s ease" // 这个done就是afterEnter的函数引用
done()
},
afterEnter(el) {
console.log("afterEnter")
this.flag = !this.flag;
}
}
});

vue 动画的更多相关文章

  1. vue动画的用法

    vue动画 在vue.js中有两种写动画的方法,第一种就是像js里一样,用原生代码来实现,第二种则是使用animate.css的动画类文件,这个动画类和bootstrap.css文件类似,直接调用类就 ...

  2. vue动画及其原理

    1,vue动画的实现原理,主要是通过在不同时期给需要动画的dom元素加上css动画样式 我们以显示和隐藏动画为例 a, 需要动画的dom元素 b,点击时vue控制往vue中加的样式 2,  我们以两张 ...

  3. vue教程3-02 vue动画

    vue教程3-02 vue动画 以下代码,已经用包管理器下载好vue,animate <!DOCTYPE html> <html lang="en"> &l ...

  4. vue动画实现方式

    vue动画实现方式 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=&q ...

  5. vue动画理解,进入、离开、列表过度和路由切换。

    vue的动画对于很多初学者,甚至对很多老鸟来说也是很费劲,不容易控制的. 这篇文章讲vue动画的理解.其实没那么难. 动画理解 一个元素从A状态变成B状态,如果这个过程通过某种方式反应在视图上了,那么 ...

  6. Vue动画操作

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

  7. vue 动画原理 part1

    Vue动画原理 增加和删除css增加样式实现一个过渡效果也就是动画效果 1.需要动画效果的标签外包裹一个transition标签 会被自动分析css样式,然后自动构建一个动画流程 transition ...

  8. Javascript - Vue - 动画

    动画状态类名 vue动画通过将需要执行动画的标签放入transition标签中,再通过设置预置的vue动画类名的css样式来控制动画的呈现效果. 开场动画状态的三个类名 v-enter:动画开始之前的 ...

  9. 15.vue动画& vuex

    Vue.config.productionTip = false; ==是否显示提示信息== ==import/export== export xxx 必须跟跟对象或者和定义一起 对象: export ...

  10. vue动画

    最近想搞搞vue的过渡和动画,以为照着官网写就好了,谁知道还是出现一些状况 具体表现就是不用webpack打包时候写的过渡是正常的,而用了webpack打包就不正常了 说使用了未定义的element: ...

随机推荐

  1. Java虚拟机15:运行期优化

    前言 HotSpot采用的是解释器+编译器并存的架构,之前的这篇文章里面已经讲过了,本文只是把即时编译器这块再讲得具体一点而已.当然,其实本文的内容也没多大意义,90%都是概念上的东西,对于实际开发. ...

  2. 解决django配合nginx部署后admin样式丢失

    解决django配合nginx部署后admin样式丢失 1.  在项目的settings.py文件里添加以下内容: STATIC_URL = '/static/' STATICFILES_DIRS = ...

  3. Sequelize-nodejs-1-getting started

    Sequelize is a promise-based ORM for Node.js v4 and up. It supports the dialects PostgreSQL, MySQL, ...

  4. SVN 客户端使用

    一.TortoiseSVN基本设置 1.1 客户端设置     1.1  语言设置       二.基本操作 2.1 浏览服务器           用户名跟密码,跟公司配置管理员人员获取,没有专门的 ...

  5. ejs引擎项目

    关于这个我也很懵逼,写这篇博客就是想记录一下,有哪位大神看到之后可以略微指点一二,不胜感激....... 一.项目结构 db model user.js version.js schema xx.js ...

  6. ajax表单提交post(错误400) 序列化表单(post表单转换json(序列化))

    序列化表单 使用serializeArray()序列化 转换成json格式 function arrayTOjson(node) { var b = "{"; for (var i ...

  7. P1841 [JSOI2007]重要的城市

    题目描述 参加jsoi冬令营的同学最近发现,由于南航校内修路截断了原来通向计算中心的路,导致去的路程比原先增加了近一公里.而食堂门前施工虽然也截断了原来通向计算中心的路,却没有使路程增加,因为可以找到 ...

  8. http协议中的keeplive是做什么的?它的适应场景是什么?

    1.Http底层也是通过TCP传输的. 2.HTTP keep-alive Http是一个”请求-响应”协议,它的keep-alive主要是为了让多个http请求共享一个Tcp连接,以避免每个Http ...

  9. Delphi - SPcomm 控件使用

    Com口函数 自动获取Com口,函数列表 procedure EnumComPorts(Ports: TStrings); //自动获取com口函数 var KeyHandle: HKEY; ErrC ...

  10. shiro配置说明

    Shiro主要是通过URL过滤来进行安全管理,这里的配置便是指定具体授权规则定义. Xml代码   <bean id="shiroFilter" class="or ...