最近读了一本讲 js 动画的书 《JavaScript 网页动画设计》,看了开头就知道是本 velocity.js 的大型广告书,但不得不说,这个动画库可以给日常的动画开发带来许多的便利,在书中我也 get 到了一些动画开发的新思路,推荐一下~
var fadeIn = {
// p -> properties
p: {
opacity: 1,
top: "50px"
},
// o -> options
o: {
duration: 1000,
easing: "linear"
}
};
$element.velocity(fadeIn.p, fadeIn.o);
// 设置 element1 的动画,紧接着设置 element2 的动画,紧接着设置 element3 的动画 $element1.velocity({ translateX: 100, opacity: 1 }, 1000, function() {
$element2.velocity({ translateX: 200, opacity: 1 }, 1000, function() { $element3.velocity({ translateX: 300, opacity: 1 }, 1000);
}); 3 });
缺点:
// 创建 Velocity 调用的数组
var loadingSequence = [
{ e: $element1, p: { translateX: 100, opacity: 1 }, o: { duration: 1000 } }, { e: $element2, p: { translateX: 200, opacity: 1 }, o: { duration: 1000, sequenceQueue: false } }, { e: $element3, p: { translateX: 300, opacity: 1 }, o: { duration: 1000 } }
];
// 将数组传入 $.Velocity.RunSequence 函数中以启动序列
$.Velocity.RunSequence(loadingSequence);
优点:
在每个动画调用中,将这个乘数与 duration 和 delay 选项值相乘
var M = 1;
$element1.animate({ opacity: 1 }, { duration: 1000 * M }); $element2.velocity({ opacity: 1 }, { delay: 250 * M });
好处:
Velocity 中的方法能实现类似的功能:
$.Velocity.mock = 5;
字符串切割的 js 插件:blast
以 sentence、word、character 切割文本,添加 blast 或者自定义 classname
// 选择之前已拆分的文本
$("div .blast").velocity(
// 使用适当的 UI pack 效果让现有文本以动画方式离开视图 "transition.fadeOut",
{
// 像错开进入动画一样错开离开动画
stagger: 50,
backwards: true,
// 当文本离开视图的动画完成以后,开始文本进入视图的动画
complete: function() {
// 继续进行文本进入视图的动画
$("div")
.html(message)
.blast({ delimiter: "word"})
.css("opacity": 0)
.velocity({opacity: 1}, {stagger: 50});
}
}
);
$.Velocity.mock = true;