第二章:基础知识

一、velocity和jQuery:

Velocity函数是独立于jQuery的,但两者可以结合使用。通常这么做的好处是可以利用jQuery的链式操作:当你先用jQuery选择了一个元素后,就可以用这个元素去调用.velocity()为它添加动画效果。例如:

//将一个变量分配给某个jQuery元素对象。

var $div = $(“div”);

//使用velocity设置该元素的动画

$div.velocity({ opacity : 0 });

//该句语法与jQuery自有的animate函数相同;

//$div.animate({ opatity : 0 });

二、参数:

velocity接受多个参数。第一个参数是一个对象,用于将CSS属性映射到最终的期望数值上。例如:

//设置元素的width属性值变动至“500px”且其opacity属性值变动至1的动画。

$element.velocity({ width:500px , opacity :1 }) ;

★小提示:如果你提供的属性值包含字母,那么要将它们用半角引号括起来。

可以将一个指定动画的对象作为第二个参数传入。

还有一种参数简写语法,那就是不将选项对象作为第二个参数传入,而是使用逗号分隔参数语法。这种写法需要列举出动画的持续时间、缓动形式和动画执行完毕后触发的一个毁掉函数。

三、属性

基于CSS的属性动画与基于javascript的属性动画有两点区别:

1.velocity针对每个CSS属性,只接受一个唯一值,这点与css不同。因此可以这样传入动画:

$element.velocity({ padding : 10 }) ;

要传入多个值时必须一一列出来:

$element.velocity({

paddingTop : 10,

paddingRight : 10,

paddingLeft : 20,

paddingBottom : 20

});

2.javascript的属性名称中,单词之间的连接号去掉了,除第一个单词外,其余单词都首字母大写。例如:padding-left变成了paddingLeft。

四、值

velocity支持px、em、rem、%、deg、vw和vh这些单位,如果没有为数值提供单位,那么就会根据CSS属性类型自动指派一个单位给它。对于大多数属性,px是默认单位。

五、链式操作

当一个元素链式调用多个velocity函数时,它们会自动排成队列,这意味着前一个动画结束后一个动画马上开始。

六、使用velocity:选项

1.duration(持续时间)

可以以毫秒为单位指定duration选项,该选项指定一个动画调用需要花费多长时间才能完成,或者也可以将duration指定为以下三个简写duration之一:“slow”(相当于600ms),“normal”(相当于400ms)或“fast”(相当于200ms)。以毫秒为单位指定duration值时,请提供一个不带单位的整数值。

2.easing(缓动)

“ease-in-out”缓动类型就表示动画一开始要逐渐加速最后要逐渐减速。

“ease-in”缓动类型则使动画在一开始就达到加速的目的,然后一直到动画结束。

“ease-out”缓动类型使动画以恒定速度开始并持续一段时间,然后在动画结束前逐渐减速。

(1)jQuery UI中的三角函数缓动:

$div.velocity({width:"300px"},"easeInOutSine");

(2)CSS缓动:

“ease-in”、“ease-in-out”、“ease-out”、“ease”(“ease-in-out”的另一个更缓和的版本)

(3)CSS的贝塞尔曲线:通过贝塞尔曲线缓动,可以完全控制一个缓动加速曲线的结构。参数格式是一个含有四个小数的数组。

$div.velocity({width:"300px"},[0.17,0.67,0.83,0.67]);

(4)弹簧物理

这类缓动类型就是模仿弹簧在拉伸之后被突然释放的弹动行为。参数格式是一个含有两个值的数组[张力、摩擦力]。张力越大(默认:500),整体速度和弹动幅度就越大。摩擦力越小(默认:20),弹簧结尾处的震动速度就越快。

$div.velocity({width : "300px"},[250,15]);

(5)如果不想实验各种张力和摩擦力数值,“spring”缓动就是一种随手可用的弹簧物理缓动的预设。

$div.velocity({width:"500px"},"spring");

3.begin(开始)和complete(完成)

使用begin和complete选项可以指定要在动画中的特定时间点触发的函数:为begin设置的函数会在动画开始前触发。与之相反,为complete设置的函数会在动画完成时调用。使用这两个选项,每次调用动画时都会调用一次指定函数,即使同时制作多个元素的动画也是如此。

$div.velocity(

{ opacity:0 ,width:"500px"},

{

begin : function(){

alert("begin!");

},

complete : function(){

alert("complete!")

}

})

4.loop(循环)

将loop选项设置为一个整数,该整数是几,动画就在调用的属性映射汇总的值与调用之前元素的值之间交替几次。

$div.velocity({height:"10em"},{loop : 2});

除了可以传入整数以外,还可以将true传给loop,这样会无限触发循环。

无限循环对于加载指示器大有帮助。(警灯)

$div.velocity({ opacity:0},{loop:true});

5.delay(延迟)

将delay指定为多少毫秒,在动画开始之前就会暂停多长时间。delay选项的目的是将动画的定时逻辑完全保留在velocity内,而不是在velocity的动画开始时依赖jquery的$.delay()函数来更改。

$div.velocity({opacity:0},{delay:100});

可以同时设置delay和loop选项,这样可以在循环交替之间创建一个停顿。

//循环四次,每次循环之间都等待1000毫秒

$div.velocity({height:"+=100px",width:"+=100px"},{loop:4,delay:1000});

6.display(显示)和visibility(可见性)

velocity中的display和visibility选项与CSS中的同名属性一一对应,接受的值也相同,包括“none”,“inline”,“inline-block”,“block”,“flex”等。

$div.velocity({opacity:0},{display:"block"});

七、其他功能

velocity.js的其他值得一提的功能包括:reverse(反转)、scrolling(滚动)、color(颜色)和transform(变换,包括translation“平移”、rotate“旋转”和“scale”缩放)

javascript动画:velocity.js学习的更多相关文章

  1. jquery动画切换引擎插件 Velocity.js 学习02

    案例实践: 第一页会以动画形式进入页面: 点击进入按钮时,第一页以动画消失,第二页以动画形式进入,同时四张图片也定义从小到大的动画形式: 第二页关闭按钮点击时,先是四张图片以缩小动画消失,然后第二页以 ...

  2. jquery动画切换引擎插件 Velocity.js 学习01

    一.Velocity.js介绍 Velocity是一个jQuery插件,重新实现了$.animate() 来产生更高的性能(速度也比CSS动画库更快),而包括新的功能,以提高动画工作流程. Veloc ...

  3. 【JavaScript动画基础】学习笔记(一)-- 旋转箭头

    随着鼠标的移动旋转箭头. requestAnimationFrame 在requestAnimationFrame之前我们可以用setInterval来实现动画的循环: function drawFr ...

  4. velocity.js 动画插件

    1. velocity.js 插件介绍 Velocity 是独立于jQuery的,但两者可以结合使用的动画插件.用法类似 jq 的 animate ,但是支持更高级动画. ( 颜色动画.转换动画(tr ...

  5. Web高性能动画及渲染原理(1)CSS动画和JS动画

    目录 一. CSS动画 和 JS动画 1.1 CSS动画 1.2 JS动画 1.3 小结 二. 使用Velocity.js实现动画 示例代码托管在:http://www.github.com/dash ...

  6. 高性能Web动画和渲染原理系列(1)——CSS动画和JS动画

    [摘要] 介绍CSS动画和JS动画的基本特点,以及轻量级动画库velocity.js的基本用法. 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园 ...

  7. 一统江湖的大前端(8)- velocity.js 运动的姿势(上)

    [摘要] 介绍CSS动画和JS动画的基本特点,以及轻量级动画库velocity.js的基本用法. 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园 ...

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

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

  9. Velocity.js发布:更快的动画切换速度

    Velocity.js是一款动画切换的jQuery插件,它重新实现了jQuery的$.animate()方法从而加快动画切换的速度.Velocity.js只有7k的大小,它不仅包含了$.animate ...

随机推荐

  1. 为什么用Object.prototype.toString.call(obj)检测对象类型?

    最近做了做一些js面试25 Essential JavaScript Interview Questions*,其中第一道是:使用typeof bar === "object"检测 ...

  2. tomcat部署war包时连接被重置(修改tomcat上传限制)

    相对目录:apache-tomcat-7.0.67/webapps/manager/WEB-INF/web.xml 500M的计算:500*1024*1024 <multipart-config ...

  3. 获取URL中的参数值

    //获取url中ID的值function getParamByName(name, url) { var match = RegExp('[?&]' + name + '=([^&]* ...

  4. uinty3d使用ugui封装一个分页控件

    我们在显示数据时有的数据比较多,手机内存有限,我们不可能分配很多的控件来显示这些数据,分页是一个不错的选择.比如玩家交易行.我们现在封装一个自己简单的分页控件来显示玩家交易行. 分页控件的原理其实很简 ...

  5. 驱动相关Error

    驱动中 fltKernel.h报 EPROCESS和PETHREAD重定义异常解决办法 驱动编写中经常会莫名出现 error C2371: 'PEPROCESS' : redefinition; di ...

  6. 在CentOS上安装第三方软件库EPEL

    Extra Packages for Enterprise Linux (EPEL)[企业版 Linux 附加软件包(以下简称 EPEL)]是一个由特别兴趣小组创建.维护并管理的,针对 红帽企业版 L ...

  7. c语言对齐问题

    引言 考虑下面的结构体定义: typedef struct{ char c1; short s; char c2; int i; }T_FOO; 假设这个结构体的成员在内存中是紧凑排列的,且c1的起始 ...

  8. 【angular+bootstrap】angular初级的时间选择器

    近期的一个项目,是用angular来写的,本来框架就是第一次接触,使用相关插件的时候就感觉更加没有头绪了,其中一个插件就是时间选择器.比较好用时间选择器就是bootstrap里面的datetimepi ...

  9. java中equals方法和contentEquals方法区别

    java中,String类里提供了两种字符串的比较方式(算上“==”应该是三种) String line1 = new String("0123456789"); String l ...

  10. WinForm 进程和线程

    进程: //进程用到的类Process,需要进行解析 using System.Diagnostics Process.Start("calc");//Process是非静态方法, ...