话说好久没有写博客了,零星的整理了一些东西,没有形成系统,所以也没有在这里记录。
 
     废话不多说了,进入今天的正题。不知道大家是否记得之前写过的一篇文章《制作炫酷的专题页面》,里面提到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. <微软的软件测试之道>读书笔记3

    一.自动化的标准步骤: 1.环境初始化,并检查环境是否处于正确的状态,能否开始测试 2.执行步骤 3.判断结果,并将结果保存到其它地方以供检查分析 4.环境清理,清理本用例产生的垃圾(临时文件.环境变 ...

  2. android实现界面左右滑动(GridView动态设置item,支持每个item按某个属性排序来显示在不同的界面)

    效果图 :                         分别是第一页.第二页.第三页,随手截的图,不整齐,勿见怪.开始走了弯路,废了不少时间. 思路如下: 1.用ViewPager实现左右分页滑动 ...

  3. 【前端JS】input textarea 默认文字,点击消失

    如题.前端页面的 input textarea 有时候须要显示默认文字以提示用户,下面为实现代码,以 input 为例.textarea 能够直接搬用 HTML <input type=&quo ...

  4. 富文本 Htmll类 html标签

    HTML类可解析的标签 在手机上显示从网络端获取的数据有两种方式,一种是WebView,另一种是TextView,WebView大家都知道,功能强大但不灵活,下面主要说下TextView. 通过查看a ...

  5. python面对对象编程----2:__init__

    面对对象编程估计我们最早接触到的就是__init__了,也就是实例的初始化处理过程: 1:来看看最基础的__init__ class Card(object): #抽象类Card,并不用于实例化 de ...

  6. HTTP状态码(HTTP Status codes)简介

    HTTP可能大家都熟悉,就是超文本传输协议.浏览器通过HTTP与WEB Server通讯(也有一些其它软件比如IM使用HTTP协议传递数据),把我们的请求(HTTP Request)传递给服务器,服务 ...

  7. 保障MySQL安全的14个最佳方法

    MySQL数据库一贯以高性能.高可性和易用性著称,它已经成为世界上最流行的开源数据库.大量的个人.WEB开发者.大型公司等都在其网站.关键系统.软件包中广泛使用MySQL数据库.        通常, ...

  8. 在iOS8下使用CLLocationManager定位服务需要系统授权

    最近在ios8.0使用CLLocationManager定位服务,发现老不能定位,查看设置菜单中的项也是处于未知状态.想起之前都有一个弹出框提示用户是否允许定位,这次一直没有出现了.原来ios8.0下 ...

  9. Struts2 处理表单重复提交

    * 在表单页面中增加一个隐藏域:<s:token></s:token>(需要在表单内)        * 创建一个struts.xml的配置文件,具体配置如下:         ...

  10. CSS的力量

    CSS(Cascading Style Sheet)级联样式表,是一种美观网页设计的解决方案,也是W3C推荐的标准,他可以是我们的网页设计更灵活,更美观,使设计人员对内容的设计和样式的设计分离,使设计 ...