mingyunyuziyou

create-keyframe-animation实例

作者: 秒速五厘米     
 


create-keyframe-animation 

github地址 


// 安装
npm install create-keyframe-animation --save

项目代码:


import animations from 'create-keyframe-animation'

// create-keyframe-animation 使用 开始
    enter(el, done) {
      const {x, y, scale} = this._getPosAndScale()// 获取变化数值

      let animation = {
        0: {
          transform: `translate3d(${x}px,${y}px,0) scale(${scale})`
        },
        60: {
          transform: `translate3d(0,0,0) scale(1.1)`
        },
        100: {
          transform: `translate3d(0,0,0) scale(1)`
        }
      }
       // 注册动画
      animations.registerAnimation({
        name: 'move',
        animation,
         // 参数配置
        presets: {
          duration: 400,// 动画时长
          easing: 'linear'// 动画曲线 过度效果
        }
      })
      // 绑定动画元素,done--到下一步afterEnter
      animations.runAnimation(this.$refs.cdWrapper, 'move', done)
    },
    afterEnter() {
      animations.unregisterAnimation('move')
      this.$refs.cdWrapper.style.animation = ''
    },
    // 该动画后部分(注释)功能会影响singer-detail的回退
    // 使用enter和afterEnter的方法则可行
    leave(el, done) {
      const {x, y, scale} = this._getPosAndScale()

      let animation = {
        0: {
          transform: `translate3d(0,0,0) scale(1)`
        },
        60: {
          transform: `translate3d(0,0,0) scale(1.1)`
        },
        100: {
          transform: `translate3d(${x}px,${y}px,0) scale(${scale})`
        }
      }

      animations.registerAnimation({
        name: 'out',
        animation,
        presets: {
          duration: 400,
          easing: 'linear'
        }
      })

      animations.runAnimation(this.$refs.cdWrapper, 'out', done)
      // this.$refs.cdWrapper.style.transition = 'all 0.4s'
      // const {x, y, scale} = this._getPosAndScale()
      // this.$refs.cdWrapper.style[transform] = `translate3d(${x}px,${y}px,0) scale(${scale})`
      // this.$refs.cdWrapper.addEventListener('transitionend', done)
    },
    afterLeave() {
      animations.unregisterAnimation('out')
      this.$refs.cdWrapper.style.animation = ''
      // this.$refs.cdWrapper.style.transition = ''
      // this.$refs.cdWrapper.style[transform] = ''
    },
    // create-keyframe-animation 使用 结束