vue里面除了用css写动画,还可以用js写动画,vue的transition中,定义了几个动画钩子
第一个动画钩子:@before-enter
<div id='app'>
  <transition
    @before-enter='handleBeforeEnter'
  >
    <div v-if='show'>hello world</div>
  </transition>
  <button @click='handleClick'>切换</button>
</div> <script>
var vm = new Vue({
  el:'#app',
  data:{
    show:true
  },
  methods:{
    handleClick:function(){
      this.show = !this.show;
    },
    handleBeforeEnter:function(el){
      el.style.color='red'
    }
  }
})
</script>
在vue的transition中,在显示数据前,会自动触发before-enter这个事件,比如上面
第二个动画钩子:@enter
<div id='app'>
  <transition
    @before-enter='handleBeforeEnter'
    @enter='handleEnter'
  >
    <div v-if='show'>hello world</div>
  </transition>
  <button @click='handleClick'>切换</button>
</div>
<script>
var vm = new Vue({
  el:'#app',
  data:{
    show:true
  },
  methods:{
    handleClick:function(){
      this.show = !this.show;
    },
    handleBeforeEnter:function(el){
      el.style.color='red'
    },
    handleEnter:function(el,done){
      setTimeout(function(){
        el.style.color='green';
        done();
      },2000);
    }
  }
})
</script>
在执行动画的时候,会触发@enter这个事件,我们大部分动画流程都是写在这里吗,这个事件跟@before-enter,有点不一样的地方就是,多了一个参数done,在执行完后,回调一下done(),告诉vue,动画执行完了,vue好执行下一个钩子函数
第三个钩子函数:@after-enter
<div id='app'>
  <transition
    @before-enter='handleBeforeEnter'
    @enter='handleEnter'
    @after-enter='handleAfterEnter'
  >
    <div v-if='show'>hello world</div>
  </transition>
  <button @click='handleClick'>切换</button>
</div> <script>
var vm = new Vue({
  el:'#app',
  data:{
    show:true
  },
  methods:{
    handleClick:function(){
      this.show = !this.show;
    },
    handleBeforeEnter:function(el){
      el.style.color='red'
    },
    handleEnter:function(el,done){
      setTimeout(function(){
        el.style.color='green';
      },2000);
      setTimeout(function(){
        done();
      },4000)
    },
    handleAfterEnter:function(el){
      el.style.color='black'
    }
  }
})
</script>
@after-enter在动画执行完后的处理
同理,有入场动画,就有出场动画
分别是before-leave,leave,after-leave
有了这些基础后,就可以写更复杂的动画效果了,我们可以引入一个库,叫做velocity.js
http://velocityjs.org/
打开velocity的官网,下载下来到本地

栗子:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
    <script src="./vue.js"></script>
    <script src="../velocity.js"></script>
  </head>
<body>
<div id='app'>
  <transition
    @before-enter='handleBeforeEnter'
    @enter='handleEnter'
    @after-enter='handleAfterEnter'
  >
    <div v-if='show'>hello world</div>
  </transition>
  <button @click='handleClick'>切换</button>
</div> <script>
var vm = new Vue({
  el:'#app',
  data:{
    show:true
  },
  methods:{
    handleClick:function(){
      this.show = !this.show;
    },
    handleBeforeEnter:function(el){
      el.style.opacity=0;
    },
    handleEnter:function(el,done){
      Velocity(el,{
        opacity:1
      },{
        duration:1000,
        complete:done
      })
    },
    handleAfterEnter:function(el){
      console.log('动画结束')
    }
  }
})
</script>
</body>
</html>  
这里就用了Velocity来实现这个动画效果,通过这个可以写出非常酷炫的动画

vue中的js动画与Velocity.js结合的更多相关文章

  1. vue中使用js动画与velocity.js

    一:vue中使用js动画 根据上一篇安装animate.css之后 vue中有动画的钩子函数,@before-enter是内容由无到有的时候自动监听触发的函数,函数会接收到参数el,这样可以动态设置样 ...

  2. Vue中Js动画 与Velocity.js 多组件多元素 列表过渡

    Vue提供我们很多js动画钩子 写在tansition标签内部 入场动画 @before-enter="" 处理函数收到一个参数(e l) el为这个元素 @enter=" ...

  3. JQuery动画插件Velocity.js发布:更快的动画切换速度

    5月3日,Julian在其GitHub上发布了Velocity.js.Velocity.js是一款动画切换的jQuery插件,它重新实现了jQuery的$.animate()方法从而加快动画切换的速度 ...

  4. 分享JQuery动画插件Velocity.js的六种列表加载特效

    分享JQuery动画插件Velocity.js的六种列表加载特效.在这款实例中给中六种不同的列表加载效果.分别为从上飞入.从右侧飞入.从左侧飞入.和渐显.一起看下效果图: 在线预览   源码下载 实现 ...

  5. vue中可以自定义动画的前缀

    vue中可以自定义动画的前缀1.只需在中加入name属性即可 <transition name="my"> <h6 v-if="flag2"& ...

  6. javascript动画:velocity.js学习

    第二章:基础知识 一.velocity和jQuery: Velocity函数是独立于jQuery的,但两者可以结合使用.通常这么做的好处是可以利用jQuery的链式操作:当你先用jQuery选择了一个 ...

  7. vue 中如何对公共css、 js 方法进行单文件统一管理,全局调用

    1.前言 最近,为公司开发交付的一个后台管理系统项目,我使用了 Vue 框架进行开发实践. 模块化.组件化.工程化的开发体验非常好.良好的 api,优雅的设计,对于工程师非常友好. 但是由于模块比较多 ...

  8. vue中使用剪切板插件 clipboard.js

    vue中使用剪切板需要借助一个插件,clipboard,使用方法还是很简单的,先下载,然后引入: npm i clipboard -S //引入 import Clipboard from 'clip ...

  9. 聊聊JS动画库:Velocity.js

    前言 又到了炎热的7月,很久没有更新技术文章了,原因是上月月底实习结束,从公司离职.然后最近在弄自己的项目和考驾照,为了下次公司的应聘做准备,送别了女朋友到外地,哩哩啦啦半个月把一切事情都办妥后,还是 ...

随机推荐

  1. disruptor 问题排查

    需求:收到银行异步通知,要在2秒内将结果返回银行,同时还要根据银行返回的交易状态更新数据库订单状态和其他业务. 采用disruptor,其实最好使用独立MQ产品.本次用的是disruptor,遇到了一 ...

  2. php数组·的方法1-数组统计函数

    /** * 下面是数组统计函数 * * * **/ //count() 数组的长度 print_r(count($arr3)); echo '<hr>'; //max() min() 数组 ...

  3. 基础 —— ip地址与子网掩码的认识

    目录: 1.IP地址的作用 2.IP地址如何表示 3.IP地址的结构 4.子网掩码 5.IP地址的分类 6.私有IP地址 7.二进制与十进制的转换 8.练习题 IP地址的作用: 在一定范围内,唯一的标 ...

  4. 研磨设计模式学习笔记3--适配器模式Adapter

    需求:制作一个日志管理系统,分为2个版本,第一版制作一个将日志存在本地文件的管理系统,第二版制作一个存储在数据库的管理系统,同时,第二版兼容第一版. 优点:可以复用现有功能,无需重新开发. 一.第一版 ...

  5. ECharts基本设置

    theme = { // 全图默认背景 // backgroundColor: ‘rgba(0,0,0,0)’, // 默认色板 color: ['#ff7f50','#87cefa','#da70d ...

  6. 数据结构---Java---数组

    **************************************************************前言************************************ ...

  7. 缺少Packages?不妨在这里找

    一个很全的网站(Linux全平台,rpm,dpkg等) Packages Search

  8. POJ 1861 ——Network——————【最小瓶颈生成树】

    Network Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 15268   Accepted: 5987   Specia ...

  9. 深入理解.net remoting 与webservice

    1. .NET Remoting .NET Remoting是微软随.NET推出的一种分布式应用解决方案,被誉为管理应用程序域之间的 RPC 的首选技,它允许不同应用程序域之间进行通信(这里的通信可以 ...

  10. Ibatis.net 1.6.2 简单配置及Log4.Net日志记录

    看似简单的Ibatis配置起来注意的地方还挺多.里面的设置及功能还算强大.昨晚配置了半宿,结果一运行还是各种错误.急的直冒汗.果断下载实例去研究.英文不好文档只能作为功能参考. 下面一步步进入Ibat ...