轻量级JS动画库:Velocity

官网:http://shouce.jb51.net/velocity/feature.html
GitHub:https://github.com/julianshapiro/velocity

一、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支持pxemrem%degvwvh这些单位,如果没有为数值提供单位,那么就会根据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”缩放)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容

  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,316评论 0 2
  • 前言 又到了炎热的7月,很久没有更新技术文章了,原因是上月月底实习结束,从公司离职。然后最近在弄自己的项目和考驾照...
    大力有话说阅读 9,024评论 4 14
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,147评论 0 1
  • 隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性。但是通过css...
    老夫撩发少年狂阅读 1,069评论 0 2
  • 第1章 动画基础隐藏和显示 1-1 jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置c...
    mo默22阅读 727评论 0 8