编程

一款轻量级且功能强大的 JavaScript 动画库-Anime.js

1751 2022-02-06 02:49:09

简介

Anime.js 是一个轻量级的 JavaScript 动画库,它的 api 相当强大且简单易用

目前 github 的 star 量 45K,可想而知受多少人的喜爱

官方地址:https://animejs.com/

github 地址:https://github.com/juliangarnier/anime/

安装

npm install animejs -S

引入使用

import anime from 'animejs/lib/anime.es.js'
// div这个元素// 右移300// 背景颜色变为白色// 动画时长600毫秒
anime({targets: 'div',translateX: 300,backgroundColor: '#FFF',duration: 600

常用示例

1、右移 250px

// targets是需要动画的对象
// 可以是一个css类,或者dom对象
// targets支持单个对象,也支持数组
anime({targets: '.el',
// targets: ['.el1','el2',node1]
translateX: 250
})

效果

2、所有的 CSS 属性都可以做动画

anime({
    targets: '.el',
    // 距离左侧240px
    left: '240px',
    // 背景颜色变成白色       
    backgroundColor: '#FFF',
    // 边框变成圆角
    borderRadius: ['0%', '50%'],
    // 指定动画的效果
    easing: 'easeInOutQuad'
})

效果

3、支持所有的 transform 动画

anime({
    targets:'.el',
    // 右移250px
    translateX: 250,
    // 缩放2倍
    scale: 2,
    // 旋转一圈
    rotate: '1turn'
})

效果

4、支持 dom 的属性修改动画

anime({
    targets: 'input',
    // 输入框的值由0到1000变化
    value: [0, 1000],
    round: 1,
    easing: 'easeInOutExpo'
})

效果

5、其它参数

anime({
    targets:'.duration-demo .el',
    translateX: 250,
    // 持续时间
    duration: 3000,
    // 延时一秒执行
    delay:1000,
    // 动画方式选择
    easing:'easeInOutExpo',
    // 反方向执行
    direction:'reverse',
    // 是否循环,还可以指定具体次数,比如
    3loop:true,
    // 最开始的时候,自动执行
    autoplay:true
})
// 还可以对单个动画效果细分
anime({
    targets: '.el',
    translateX: {value: 250,duration: 800},
    rotate: {value: 360,duration: 1800,easing: 'easeInOutSine'},
    scale: {value: 2,duration: 1600,delay: 800,easing: 'easeInOutQuart'},
    delay: 250
})

效果

6、动画片断执行

anime({
    targets: '.animation-keyframes-demo .el',
    keyframes: [{translateY: -40},{translateX: 250},{translateY: 40},{translateX: 0},{translateY: 0}],
    duration: 4000,
    easing: 'easeOutElastic(1, .8)',
    loop: true
})

效果

Api 是不是非常的简单理解,但是功能又强大