微信小程序动画

559 阅读2分钟

微信小程序不仅仅是为了快速开发一个能用的小应用,有时为了更好的用户体验,还需要添加一些动画效果,动画效果除了使用 web 端那套 css 动画之外,微信还专门给我们提供了专门的动画 api,这样能让我们的动画过渡更流畅,因此比较推荐(css动画过渡也能用,但流畅度肯定是不如小程序提供的 api 的)

前面编写的 css动画、过渡、变换、常用函数等介绍

小程序动画

小程序编写动画也很简单,只需要 设置一个 animation 参数,就可以直接通过更新 animation 来实现动画了,如下所示

// WXML中定义元素
<view class="box" animation="{{animationData}}"></view>
 
 
// JS中定义动画效果
Page({
  data: {
    animationData: {}
  },
  onReady: function() {
    // 创建动画实例
    var animation = wx.createAnimation({
      duration: 1000,
      timingFunction: 'ease', //过渡曲线 
      delay: 0, //表示延迟时间ms
    })
 
    // 执行平移动画,step()表示一组动画完成
    animation.translate(100, 100).step()
    //animation.translateX(100).step() //只平移x
    //执行缩放动画
    //animation.scale(2, 2).step()
    animation.translateX(100).scaleX(2).step() //
 
    // 更新元素的动画效果
    this.setData({
      animationData: animation.export()
    })
  }
})
timingFunction合法值说明
'linear'动画从头到尾的速度是相同的
'ease'动画以低速开始,然后加快,在结束前变慢
'ease-in'动画以低速开始
'ease-in-out'动画以低速开始和结束
'ease-out'动画以低速结束
'step-start'动画第一帧就跳至结束状态直到结束
'step-end'动画一直保持开始状态,最后一帧跳到结束状态

step 结束表示一组动画完成,也同时意味着可以一次性设置多种变换,形成动画组

export 表示每次调用后会清掉之前的动画操作

其方法主要是 平移(translate)、缩放(rotate)、旋转(scale)、倾斜(skew)、透明度(opacity),也支持单个轴反向的,例如:平移 translateX

同时还额外支持设置 background-color、width、height、top、left、bottom、right 参数 ,注意仍然不支持 background-image