anime.js是一个方便好用的动画库。一些使用方法将记录在此。
引入vue项目
先在终端安装依赖
1 2 3 4 5
| $ npm install animejs --save ``` 再在script代码块中引入 ```js import anime from 'animejs/lib/anime.es.js'
|
选择动画目标
1 2 3 4
| anime({ targets:'#circle', translateX:0 })
|
设定动画初始值
1 2 3 4
| anime({ targets:'#circle', translateX:[start,end] })
|
属性关键帧
当设定不同属性的动画时,同时开始执行。如下,两组关键帧同时开始执行。x向右立刻偏移100,偏移开始时,y偏移的前摇开始,在x偏移完毕后,执行x向左偏移的前摇,同时y向右偏移的前摇时间结束,开始偏移,偏移结束时,x向左偏移的前摇结束,x向左偏移。从而,偏移顺序是,右,下,左,上。
1 2 3 4 5 6 7 8 9 10 11 12
| anime({ targets:'#circle', translateX:[ {value:100,duration:1000}, {value:0,duration: 1000,delay:1000} ], translateY:[ {value:100,duration:1000,delay:1000}, {value:0,duration: 1000,delay: 1000} ], easing: 'easeOutElastic(1, .8)', })
|
描边动画
svg图片的边长可以通过对path标签对应的dom对象调用方法getTotalLength( )来获得。设置描边的虚线长度和偏移量等于边长,前者可以使得描边的虚线很长,看起来就像实线,后者可以让这个虚线部分完全偏移起点,展现出的是虚线之间的空白距离,也就是透明线。
1 2 3 4 5 6 7 8
| mounted() { let paths=document.getElementsByTagName("path"); for (let i=0;i<paths.length;i++) { paths[i].style.strokeDasharray=paths[i].getTotalLength()+''; paths[i].style.strokeDashoffset=paths[i].getTotalLength()+''; } }
|
通过动画缓慢调整虚线的偏移值,一点点露出来,就能看见这个虚线顺着边描线了。offset为0时,虚线刚好就能展示完毕,也就是描边完成。
1 2 3 4 5 6 7 8 9
| anime({ targets: '#msg path', strokeDashoffset: [anime.setDashoffset, 0], easing: 'easeInOutSine', duration: 1500, delay: function(el, i) { return i * 250 }, direction: 'alternate', loop: true })
|