首页 > 技术文章 > 文本动画效果小结

xiaoheimiaoer 2016-02-16 14:58 原文

重所周知,在处理页面的时候,动画会给静态页面带了一些生机,我们也会在制作页面的时候考虑增加一些动画效果,来增强页面的用户体验。但是需要注意的是,不是所有的动画都能增强用户体验,也需要慎重使用动画。时刻牢记一条准则:【要么实用,要么优雅,要么死路一条!】

我在之前也对velocity.js这个动画库做过简单的介绍(制作炫酷的专题页面velocity序列动画velocity自定义动画),今天主要了解一下文本相关的动画效果。

  • jquery文本动画淡入效果插件reveal-it.js
    首先下载必要的JSCSS资源;其次该插件接受四个参数:

    • id:影响生成的dom,class为reveal__inner-id,可以自己写样式或者JS选择独立处理
    • auto:是否自动播放,默认是true
    • delay:单位毫秒,延迟时间
    • background:背景色
    • trigger:出发条件,一般为空或者是on-visible

    该插件提供了两个方法,一个是初始化方法:$.fn.initReveal(options),另外一个是执行方法,当设置auto为false时,可以自定义触发方式,如:点击、鼠标进入等事件。

  • 更加强大的文本动画blast.js+velocity.js
    首先隆重推出的是blast.js,它是专门分割文本元素的js,提供了多重分个方式和一些其他参数,方便对文本进行相关css样式设置或者动画相关。
    我们先看一下简单的使用方式:

//使用前
<div>
    Hello World
</div>
//使用JS
$("div").blast({ 
    delimiter: "character" //设置分割符:charactor(字符)、word(单词)、sentence(句子)
    search: false // 以search的值进行分割
    tag: "span" // 设置包裹元素标签类型
    customClass: "" // 添加自定义的样式类
    generateIndexID: false // 添加自定义ID序号:#customClass-i
    generateValueClass: false // 添加.blast-分隔符类型-值的类名
    stripHTMLTags: false // 分割之前Strip HTML
});
//使用后
<div class="blast-root">
    <span class="blast">Hello</span>
    <span class="blast">World</span>
</div>
//可以恢复合成后的dom
$('div').blast(false);
上述的方式,可以将一个完整的文本分割成你想要的效果。然后就可以结合velocity.js设置动画了。
$("div").blast({ 
    delimiter: "character"
}).velocity("transition.fadeIn", {
    duration: 1250,
    stagger: 40, //数组中每个元素的时间间隔
    delay: 400
  })

$.Velocity.hook = true;可以快速关闭动画,方便debug或者测试使用,也方便在特定环境下禁用动画。

以此为例,可以给单个元素执行各种你需要的动画,包括入场和出场。剩下就需要你独一无二的创造力了~

参考资料:

推荐阅读