话说好久没有写博客了,零星的整理了一些东西,没有形成系统,所以也没有在这里记录。
 
     废话不多说了,进入今天的正题。不知道大家是否记得之前写过的一篇文章《制作炫酷的专题页面》,里面提到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(java)学习笔记250:ContentProvider使用之获得系统联系人信息02(掌握)

    1.重要: 系统删除一个联系人,默认情况下并不是把这个联系人直接删除掉了,只是做了一个标记,标记为被删除. 2.前面一讲说过了如何获取系统联系人信息(通过ContentProvider),获取联系人信 ...

  2. Java基础知识强化23:Java中数据类型转换(面试题)

    1. 以下代码输出结果是( D ).                     public  class  Test   {                                       ...

  3. codevs 2995 楼房

    /*暴力30分*/ #include<iostream> #include<cstring> #include<cstdio> #include<map> ...

  4. 06-自定义Attribute标记案例

    自定义Attribute: 1)Attribute都从System. Attribute类继承,类名一般以Attribute结尾 2) 标记类的用途—AttributeUsage标记(标记的标记):A ...

  5. OD: ASLR

    ASLR,Address Space Layout Randomization,通过加载程序的时候不再使用固定的基址,从而干扰 shellcode 定位的一种保护机制,包括映像随机化.堆栈随机化.PE ...

  6. setTimeout()与setInterval()方法区别介绍

    计时器setTimeout()和setInterval()两个都是js的计时功能的函数两个有些区别,下面为大家简单介绍下,希望对大家有所帮助   计时器setTimeout()和setInterval ...

  7. jquery插件--多行文本缩略

    1.webkit内核多行缩略样式 text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orie ...

  8. ICSharpCode.SharpZipLib实现压缩解压缩

    最近,在项目中经常需要处理压缩和解压缩文件的操作.经过查找,发现了ICSharpCode.SharpZipLib.dll ,这是一个完全由c#编写的Zip, GZip.Tar . BZip2 类库,可 ...

  9. Debugging Failed Because Integrated Windows Authentication Is Not Enabled

    To enable integrated Windows authentication Log onto the Web server using an administrator account. ...

  10. 系统管理中 bash shell 脚本常用方法总结

    在日常系统管理工作中,需要编写脚本来完成特定的功能,编写shell脚本是一个基本功了!在编写的过程中,掌握一些常用的技巧和语法就可以完成大部分功能了,也就是2/8原则 1. 单引号和双引号的区别 单引 ...