使用veloticy-ui生成文字动画效果


Posted in Javascript onFebruary 08, 2018

前言

最近要实现一个类似文字波浪线的效果,使用了velocity-ui这个动画库,第一个感觉就是使用简单,代码量少,性能优异,在此简单介绍一下使用方法,并实现一个看上去不错的动画.

具体使用方法可以点击这里

基本使用

要使用 velocity-ui 需要先引入velocity,其中velocity可以是依赖jquery,也可以不依赖jquery,具体看一下下面就行了

//不依赖jquery,第一个参数为原生js的dom选择器
Velocity(document.getElementById("dummy"), {
 opacity: 0.5
}, {
 duration: 1000
});
// 使用 jQuery 或 Zepto 时
$("#dummy").velocity({
 opacity: 0.5
}, {
 duration: 1000
});

可以看出在使用jquery时,velocity的基本使用就像jquery的animate,引入 velocity-ui 的

目的就是提供一些已经定义好的动画(指令),有一点像Animate.css这样的动画库,但是可以提供

更细致的控制,

基本配置项

$element.velocity({
 width: "500px", // 动画属性 宽度到 "500px" 的动画
 property2: value2 // 属性示例
}, {
 /* Velocity 动画配置项的默认值 */
 duration: 400,  // 动画执行时间
 easing: "swing", // 缓动效果
 queue: "",  // 队列
 begin: undefined, // 动画开始时的回调函数
 progress: undefined, // 动画执行中的回调函数(该函数会随着动画执行被不断触发)
 complete: undefined, // 动画结束时的回调函数
 display: undefined, // 动画结束时设置元素的 css display 属性
 visibility: undefined, // 动画结束时设置元素的 css visibility 属性
 loop: false,  // 循环
 delay: false,  // 延迟
 mobileHA: true  // 移动端硬件加速(默认开启)
});
width: ["500px", "300px"]//这样设置后面的300px会作为初始默认值
width: ["500px", "spring","300px"]//这样可以为单个属性指定缓动函数
width: function (index, total) {}//对集合对象可以设置不同的属性值

可以看出velocity也可以设置quequ,使用和animate是一致的,而且velocity自身提供一些指令来实现动画,有fadeIn/fadeOut, slideUp/slideDown,

scroll,finish,reverse,除此以外velocity实现了对transform, color这些属性动画的支持,并支持SVG和promise,具体使用可以看上面链接的文档。

velocity-ui 除了提供更多的指令外,还提供了两个方法 RunSequence 和 RegisterEffect(非jquery可以去掉$.,把jquery换为原生DOM)

// 将嵌套动画序列储存到一个数组里,很清晰的显示了它们的执行顺序
var mySequence = [
 { e: $element1, p: { translateX: 100 }, o: { duration: 1000 } },
 { e: $element2, p: { translateX: 200 }, o: { duration: 1000 } },
 { e: $element3, p: { translateX: 300 }, o: { duration: 1000 } }
];
// 调用这个自定义的序列名称 还可以在其他地方复用
$.Velocity.RunSequence(mySequence);
// name:动画特效名称 为字符串类型
// defaultDuration:默认动画执行时间 单位为毫秒(ms)
// calls:动画队列数组,property - 动画属性,durationPercentage - 当前动画所占总时间的百分比 (写成浮点数),option - 选项
// reset:设置元素在动画开始时的初始值
$.Velocity.RegisterEffect(name, {
 defaultDuration: duration,
 calls: [
 [ { property: value }, durationPercentage, { options } ],
 [ { property: value }, durationPercentage, { options } ]
 ],
 reset: { property: value, property: value }
});

除了以上两个函数外,还提供了3个额外的options属性

stagger 可以让集合对象依次错开一段时间执行动画

drag 可以让集合对象的最后一个元素有缓冲效果

backwards 可以让集合对象从最后一个元素往前依次错开一段时间执行动画

下面就利用 RegisterEffect 和 stagger 实现一个简单的文字动画

实现一个自定义动画 

<!DOCTYPE html>
<html lang="zh-CN">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <meta name="renderer" content="webkit">
 <title>Document</title>
</head>
<body>
 <h1 id="J_Text">segmentfault</h1>
 <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
 <script src="https://cdn.bootcss.com/velocity/1.5.1/velocity.min.js"></script>
 <script src="https://cdn.bootcss.com/velocity/1.5.1/velocity.ui.min.js"></script>
 <script>
 jQuery(function ($) {
 $.Velocity.RegisterEffect('custom', {//注册一个叫'custom'自定义动画
 defaultDuration: 1500,
 calls:[
  [{
  rotateY: 360,
  translateY: '-=15',
  }, 0.5],
  [{
  translateY: '+=15',
  }, 0.5]
 ], 
 })
 $('#J_Text').css({
 fontSize: 40,
 color: '#333',
 }) .html(function () {
  return $(this).text().split('').map(function (char) {
 return '<span>' + char + '</span>'; //让每字符被span元素包裹
 }).join('');
 }).find('span')
 .filter(function (index) {
 return index > 6
 }).css('color', '#009A63').end() //让后面几个字符变为绿色
 .css({
 position: 'absolute',
 left: function (index) {
  return index * 20; //设置字符的间隔
 }
 })
 .velocity('custom', { //调用自定义的动画指令
 stagger: 300,
 delay: 1000, 
 })
 })
 </script>
</body>
</html>

使用veloticy-ui生成文字动画效果

除去一些字符的操作,可以看出实现一个看似复杂的动画只需简单设置calls 和stagger属性的值就可以了,这个gif在循环播放那个动画,实际上这个动画只执行了一次,大家可以思考一下怎么实现整个队列的循环

最后

velocity内部由于对动画方面进行了优化,所以性能方面比jquery的animate要好,甚至比css的transition还要出色,当然这个我没有测试过,大家可以测试一下。

总结

以上所述是小编给大家介绍的使用veloticy-ui生成文字动画效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
ExtJS GTGrid 简单用户管理
Jul 01 Javascript
关于文本框的一些限制控制总结~~
Apr 15 Javascript
jQuery为iframe的body添加click事件的实现代码
Apr 07 Javascript
Javascript 遮罩层和加载效果代码
Aug 01 Javascript
JS按回车键实现登录的方法
Aug 25 Javascript
jQuery实现购物车数字加减效果
Mar 14 Javascript
jquery滚动特效集锦
Jun 03 Javascript
javascript匀速运动实现方法分析
Jan 08 Javascript
如何用JS判断两个数字的大小
Jul 21 Javascript
Vue项目使用CDN优化首屏加载问题
Apr 01 Javascript
Vue js 的生命周期(看了就懂)(推荐)
Mar 29 Javascript
如何编写一个 Webpack Loader的实现
Oct 18 Javascript
js中let和var定义变量的区别
Feb 08 #Javascript
详解Nuxt.js Vue服务端渲染摸索
Feb 08 #Javascript
VUE 使用中踩过的坑
Feb 08 #Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
Feb 08 #Javascript
在vue项目中使用element-ui的Upload上传组件的示例
Feb 08 #Javascript
vue中实现methods一个方法调用另外一个方法
Feb 08 #Javascript
使用vux实现上拉刷新功能遇到的坑
Feb 08 #Javascript
You might like
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
点击弹出层效果&amp;弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
JS数组去重的6种方法完整实例
2018/12/08 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
操作Windows注册表的简单的Python程序制作教程
2015/04/07 Python
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
Python实现PS图像调整颜色梯度效果示例
2018/01/25 Python
使用EduBlock轻松学习Python编程
2018/10/08 Python
python接口调用已训练好的caffe模型测试分类方法
2019/08/26 Python
Python的垃圾回收机制详解
2019/08/28 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
Python 多进程原理及实现
2020/12/21 Python
python re模块常见用法例举
2021/03/01 Python
求网格中的黑点分布
2013/11/06 面试题
高职助产应届生自荐信
2013/09/24 职场文书
应聘护士求职信
2014/07/21 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
学校2014年度工作总结
2014/12/06 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
工程进度款催款函
2015/06/24 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
关于的python五子棋的算法
2022/05/02 Python