微信小程序 动画


本文整理自网络,侵删。

动画

界面动画的常见方式

在小程序中,通常可以使用 CSS 渐变 和 CSS 动画 来创建简易的界面动画。

动画过程中,可以使用 bindtransitionend bindanimationstart bindanimationiteration bindanimationend 来监听动画事件。

事件名含义
transitionendCSS 渐变结束或 wx.createAnimation 结束一个阶段
animationstartCSS 动画开始
animationiterationCSS 动画结束一个阶段
animationendCSS 动画结束

注意:这几个事件都不是冒泡事件,需要绑定在真正发生了动画的节点上才会生效。

同时,还可以使用 wx.createAnimation 接口来动态创建简易的动画效果。(新版小程序基础库中推荐使用下述的关键帧动画接口代替。)

关键帧动画

基础库 2.9.0 开始支持,低版本需做兼容处理。

从小程序基础库 2.9.0 开始支持一种更友好的动画创建方式,用于代替旧的 wx.createAnimation 。它具有更好的性能和更可控的接口。

在页面或自定义组件中,当需要进行关键帧动画时,可以使用 this.animate 接口:

this.animate(selector, keyframes, duration, callback)

参数说明

属性类型默认值必填说明
selectorString选择器(同 SelectorQuery.select 的选择器格式)
keyframesArray关键帧信息
durationNumber动画持续时长(毫秒为单位)
callbackfunction动画完成后的回调函数

keyframes 中对象的结构

属性类型默认值必填说明
offsetNumber关键帧的偏移,范围[0-1]
easeStringlinear动画缓动函数
transformOriginString基点位置,即 CSS transform-origin
backgroundColorString背景颜色,即 CSS background-color
bottomNumber/String底边位置,即 CSS bottom
heightNumber/String高度,即 CSS height
leftNumber/String左边位置,即 CSS left
widthNumber/String宽度,即 CSS width
opacityNumber不透明度,即 CSS opacity
rightNumber右边位置,即 CSS right
topNumber/String顶边位置,即 CSS top
matrixArray变换矩阵,即 CSS transform matrix
matrix3dArray三维变换矩阵,即 CSS transform matrix3d
rotateNumber旋转,即 CSS transform rotate
rotate3dArray三维旋转,即 CSS transform rotate3d
rotateXNumberX 方向旋转,即 CSS transform rotateX
rotateYNumberY 方向旋转,即 CSS transform rotateY
rotateZNumberZ 方向旋转,即 CSS transform rotateZ
scaleArray缩放,即 CSS transform scale
scale3dArray三维缩放,即 CSS transform scale3d
scaleXNumberX 方向缩放,即 CSS transform scaleX
scaleYNumberY 方向缩放,即 CSS transform scaleY
scaleZNumberZ 方向缩放,即 CSS transform scaleZ
skewArray倾斜,即 CSS transform skew
skewXNumberX 方向倾斜,即 CSS transform skewX
skewYNumberY 方向倾斜,即 CSS transform skewY
translateArray位移,即 CSS transform translate
translate3dArray三维位移,即 CSS transform translate3d
translateXNumberX 方向位移,即 CSS transform translateX
translateYNumberY 方向位移,即 CSS transform translateY
translateZNumberZ 方向位移,即 CSS transform translateZ

示例代码

在开发者工具中预览效果


  this.animate('#container', [
    { opacity: 1.0, rotate: 0, backgroundColor: '#FF0000' },
    { opacity: 0.5, rotate: 45, backgroundColor: '#00FF00'},
    { opacity: 0.0, rotate: 90, backgroundColor: '#FF0000' },
    ], 5000, function () {
      this.clearAnimation('#container', { opacity: true, rotate: true }, function () {
        console.log("清除了#container上的opacity和rotate属性")
      })
  }.bind(this))

  this.animate('.block', [
    { scale: [1, 1], rotate: 0, ease: 'ease-out'  },
    { scale: [1.5, 1.5], rotate: 45, ease: 'ease-in', offset: 0.9},
    { scale: [2, 2], rotate: 90 },
  ], 5000, function () {
    this.clearAnimation('.block', function () {
      console.log("清除了.block上的所有动画属性")
    })
  }.bind(this))

调用 animate API 后会在节点上新增一些样式属性覆盖掉原有的对应样式。如果需要清除这些样式,可在该节点上的动画全部执行完毕后使用 this.clearAnimation 清除这些属性。

this.clearAnimation(selector, options, callback)

参数说明

属性类型默认值必填说明
selectorString选择器(同 SelectorQuery.select 的选择器格式)
optionsObject需要清除的属性,不填写则全部清除
callbackFunction清除完成后的回调函数

滚动驱动的动画

我们发现,根据滚动位置而不断改变动画的进度是一种比较常见的场景,这类动画可以让人感觉到界面交互很连贯自然,体验更好。因此,从小程序基础库 2.9.0 开始支持一种由滚动驱动的动画机制。

阅读剩余部分

相关阅读 >>

微信小程序绘图api中创建二次方贝塞尔曲线

微信小程序 wxml

微信小程序api nfc-取消事件监听

微信小程序 wxml

微信小程序api 接收消息和事件

微信小程序云开发 api数据库删除集合

微信小程序api createworker

sdk数据库 command聚合操作符字符串操作符

微信小程序视图容器 cover-view

微信小程序api 视频-拍摄或相册中选择图片或视频

更多相关阅读请进入《微信小程序》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...