话说好久没有写博客了,零星的整理了一些东西,没有形成系统,所以也没有在这里记录。
 
     废话不多说了,进入今天的正题。不知道大家是否记得之前写过的一篇文章《制作炫酷的专题页面》,里面提到velocity.js可以实现高效的动画方式。并且支持原生JS和jquery或者zepto的结合,让我们方便的使用动画,并且能够方便的监听元素的动画状态。
 
     我们可以通过提供的Velocity方法对元素的css属性进行改变,如:宽、高,位置等,同时还提供了begain、complele等回调函数便于监听元素的动画状态。与此同时,velocity.js提供了一种快速使用动画的方式—UI Pack。
 
     UI Pack提供了多种动画方式,如:callout.bounce、callout.shake、callout.flash等等,可以方便我们快速的完成元素的动画。与此同时,他提供了一个方法—Velocity.RegisterEffect,可以方便的注册新的动画方式,便于用户自定义一些很炫酷的动画,自己快速使用。
 
     这里说一下RegisterEffect函数的参数是做什么用的。

Velocity.RegisterEffect(name, parms);
name:字符串,自定义动画名称
parms:对象
{
defaultDuration: 0,
calls: [],
reset: {}
}
     其中,defaultDuration是默认的动画时长,calls是一个二维数组,存储动画序列,reset设置动画的初始状态,在动画执行完毕后,会恢复到reset状态。calls中子元素的结构是:[properties, duration, options],properties是一个对象,用于设置元素的css属性值,duration指的是这部分属性变化需要的时间长度;options指的其他额外的属性,比如:easing、delay、complete等等。
 
     需要注意的是:
  • properties操作的元素css属性和原生的属性右细微的差别,比如:blur,是用来设置模糊程度的,直接写成{blur: 10}即可,不需要写成filter...类似这种情况还有一些,需要在实现的时候注意一下
  • duration的值是百分比,意思是defaultDuration的百分比,并且使用者可以覆盖初始化的值
  • options可以设置额外的配置,比如执行这个动画的类型:linear还是ease-in-out等等
 
     下面来一个例子:
Velocity.RegisterEffect('shake', {
defaultDuration: 800,
calls: [
[ { translateX: -11, opacity: 1}, 0.125 ],
[ { translateX: 11 }, 0.125 ],
[ { translateX: -11 }, 0.125 ],
[ { translateX: 11 }, 0.125 ],
[ { translateX: -11 }, 0.125 ],
[ { translateX: 11 }, 0.125 ],
[ { translateX: -11 }, 0.125 ],
[ { translateX: 0 }, 0.125 ]
]
});
$element.velocity(’shake');
     这个例子完成了振动的效果,就是左右摇摆。
 
     我们发现,使用这种方式注册新的动画很方便,这样可以自己实现一些小动画,然后需要的时候可以直接使用,不需要每次都做重复的工作。同时UI Pack也存在的一些问题:
  • 动画名称过长,语意性差
  • 使用UI Pack的动画,loop属性会失效
  • 无法监听动画完成时机
     
     这些问题,我们接下来会想办法解决。
 
     目前线上我们用的比较多的是css3动画,使用简单,操作方便受到开发者的喜欢。css3库中,使用比较多的当属animation.css和magic.css了,两个加起来提供了将近两百种动画类型,基本上可以解决我们的动画需求。css动画存在一个严重的问题,同一个元素无法同时执行两种动画,我们也无法将两种动画作为序列进行执行。另外我们也无法很简单的监听CSS3动画是否执行完毕。
 
     使用velocity可以解决css3存在的这些问题,并且可以实现更炫的效果。 后续会进行讲解说明,敬请期待!

velocity自定义动画的更多相关文章

  1. android 自定义动画

    android自定义动画注意是继承Animation,重写里面的initialize和applyTransformation,在initialize方法做一些初始化的工作,在applyTransfor ...

  2. Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析

    这是关于RecyclerView的第二篇,说的是如何自定义Item动画,但是请注意,本文不包含动画的具体实现方法,只是告诉大家如何去自定义动画,如何去参考源代码. 我们知道,RecyclerView默 ...

  3. 深入学习jQuery自定义动画

    × 目录 [1]属性对象 [2]可选参数 [3]选项参数 前面的话 很多情况下,前面介绍的jQuery动画的简单效果无法满足用户的各种需求,那么就需要对动画有更多的限制,需要采取一些高级的自定义动画来 ...

  4. 自定义动画css属性

    自定义动画: 1.animation-name(自定义动画名称) 元素所应用的动画名称,必须与@keyframes使用,名称由@keyframes定义. keyframes(动画关键帧):以@keyf ...

  5. [UE4]CustomAnimationBlueprintNode 自定义动画蓝图节点

    目的:在AnimationBlueprint中使用自定义动画控制节点. 主要过程: 1.      引用相关模块.在Client.Build.cs文件中,PublicDependencyModuleN ...

  6. CSS3初学篇章_6(自定义动画)

    自定义动画 由于有一部分低版本的浏览器并不支持的问题,所以这个样式要多做兼容,各大浏览器兼容前缀如下: 前缀 浏览器  -webkit  chrome和safari  -moz  firefox  - ...

  7. Popwindow自定义动画(nexus5不支持暂未解决)

    遇到一个问题,先记录一下 PopWindow自定义动画 import android.app.Activity; import android.graphics.drawable.BitmapDraw ...

  8. Android开发UI之自定义动画

    自定义动画,需要新建一个类,继承Animation类. 重写applyTransformation()方法和initialize()方法. applyTransformation(float inte ...

  9. Android 动画效果 及 自定义动画

    1. View动画-透明动画效果2. View动画-旋转动画效果3. View动画-移动动画效果4. View动画-缩放动画效果5. View动画-动画效果混合6. View动画-动画效果侦听7. 自 ...

随机推荐

  1. Android TabActivity之感叹

    (一)前言 在以前一篇帖子讲ams的时候,提了一下TabActivity.当时说它比较特殊就没有下文了,今天重发一篇帖子,跟大家探讨一下TabActivity. 做个假定先: 比如我们最外面的Acti ...

  2. 再次记录老K站点的工作策略

    股市开盘了. 据说今天是多空决战的日子. 7月17日.三大期指交割. 打开大盘,看着指数一会上升,一会跳水.好不欢乐.当然,今天我是来记录我的老K,关于老K的下一步. 近期每天傍晚的时候.都会去江边散 ...

  3. Sort List (使用归并排序的链表排序)

    Sort a linked list in O(n log n) time using constant space complexity. C++代码的实现: #include<iostrea ...

  4. C#导出数据到Excel通用的方法类

    导出数据到Excel通用的方法类,请应对需求自行修改. 资源下载列表 using System.Data; using System.IO; namespace IM.Common.Tools { p ...

  5. ASP图片格式与base64数据互转方法

    ASP图片格式与base64数据相互转换的方法,经常用于处理表单中存储有base64字符串格式的图片. 获取到base64数据,转换成图片 <% Subfolder=year(now)& ...

  6. Spark HA 的搭建

    接hadoop HA的搭建,因为你zookeeper已经部署完成,所以直接安装spark就可以 tar –xzf spark-1.6.1-bin-hadoop2.6.tgz -C ../service ...

  7. css中的垂直居中方法

    单行文字 (外行高度固定) line-height 行高, 将line-height值与外部标签盒子的高度值设置成一致就可以了. height:3em; line-height:3em; 多行文字 图 ...

  8. lab3

    lamp: 在阿里云linux(Ubuntu)上安装Apache mysql php : apt-get install mysql_server mysql_client php5 php_mysq ...

  9. mongodb入门教程

    title: mongodb入门教程 date: 2016-04-06 14:47:18 tags: --- 为什么要认识呢,因为这玩意就一傻逼 借用一下百科的介绍 MongoDB 是一个介于关系数据 ...

  10. Windows Server 2008 R2 搭建FTP服务

    一.安装ftp服务 1.在服务管理器"角色"右键单击"添加角色".  2.下一步. 3.勾选"Web 服务器(IIS)",下一步. 4.勾选 ...