首頁  >  文章  >  web前端  >  怎樣使用veloticy-ui產生文字動畫

怎樣使用veloticy-ui產生文字動畫

php中世界最好的语言
php中世界最好的语言原創
2018-03-14 17:38:481471瀏覽

這次帶給大家怎麼使用veloticy-ui產生文字動畫,使用veloticy-ui產生文字動畫的注意事項有哪些,下面就是實戰案例,一起來看一下。

前言

最近要實現一個類似文字波浪線的效果,使用了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>

除去一些字元的操作,可以看出實現一個看似複雜的動畫只需簡單設定calls 和stagger屬性的值就可以了,這個gif在循環播放那個動畫,實際上這個動畫只執行了一次,大家可以思考一下怎麼實現整個隊列的循環

#最後

velocity內部由於對動畫方面進行了優化,所以性能方面比jquery的animate要好,甚至比css的transition還要出色,當然這個我沒有測試過,大家可以測試一下。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

jquery+css3做出直播平台的導航

滑鼠響應式淘寶動畫效果的實現

如何用jquery做出放大鏡效果
#

以上是怎樣使用veloticy-ui產生文字動畫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn