微信小程序实现渐入渐出动画效果

作者:celen 时间:2024-04-23 09:32:53 

前言

在做小程序列表展示的时候,接到了一个需求。需要在列表展示的时候加上动画效果。设计视频效果如下图:

微信小程序实现渐入渐出动画效果

需要在进入列表页的时候,依次展示每一条卡片,在展示完成后需要隐藏掉当天之前的卡片。

实现思路

实现该动画效果,首先需要给每个卡片添加一个css动画。因为每个卡片的显示是有时间间隔的,以及考虑到展示完成后的隐藏效果,所以动画效果需要用js动态去添加。在看了微信开发文档后,发现微信小程序提供了Animation的一个动画对象,具体看了里面的参数后发现,是可以实现需求上的效果的。具体使用如下api:

wx.createAnimation(Object object) 创建一个animation对象。最后通过动画实例的export方法导出动画数据传递给组件的 animation 属性。里面有如下参数:duration(动画持续时间,单位 ms),timingFunction(动画的国度效果),delay(动画延迟)

创建的animation对象,本次实现过程中需要用到如下属性:

Animation.export() 可以导出动画队列,export 方法每次调用后会清掉之前的动画操作。
Animation.step(Object object) 表示一组动画完成。可以在一组动画中调用任意多个动画方法,一组动画中的所有动画会同时开始,一组动画完成后才会进行下一组动画。比如一组动画结束了,就以step()结尾
Animation.translateY(number translation) 在 Y 轴平移的距离,单位为 px
Animation.opacity(number value) 透明度 0-1的取值范围

看到上面这些属性,合理使用的话,那么实现需求提到动画效果那是稳稳的。

实现步骤

封装一个方法,用来创建动画,并方便调用


/**
* 动画实现
* @method animationShow
* @param {that} 当前卡片
* @param {opacity} 透明度
* @param {delay} 延迟
* @param {isUp} 移动方向
*/
animationShow: function (that,opacity, delay, isUp) {
let animation = wx.createAnimation({
 duration: 1000,
 timingFunction: 'ease',
 delay: delay
});
<!--考虑到还需要隐藏掉当天之前的卡片,做如下判断来赋予不同的动画效果-->
if (isUp == 'down') {
 animation.translateY(0).opacity(opacity).step().translateY(-80).step();
} else if (isUp == 'up') {
 animation.translateY(0).opacity(opacity).step().translateY(-140).opacity(0).step()
} else {
 animation.translateY(0).opacity(opacity).step()
}
let params = ''
params = animation.export()
return params
},

初始化每个卡片的样式

首先每个卡片的位置相对于自身往Y轴平移80像素,并且把透明度设置为0。这样就可以进入页面的时候再往下平移并且让卡片逐渐显示。


.init{
opacity: 0;
transform: translateY(-80px)
}

处理数据

循环处理每一条数据,通过调用封装的方法,来获得该卡片应该拥有的动画属性


for (let i = 0; i < transData.length; i++) {
if (i == 0) {
 transData[i].animation = that.app.slideupshow(that, 1, 0, 'up')
} else {
 transData[i].animation = that.app.slideupshow(that, 1, (i + 1) * 10, 'down')
}
}

给每个卡片附加animation属性

<view class="init" animation="{{item.animation}}">

实现效果

微信小程序实现渐入渐出动画效果

跟设计视频中的动画风格基本保持一致,美滋滋。

来源:https://juejin.im/post/5ce786b2f265da1bca51b5ed

标签:微信小程序,渐入渐出,动画
0
投稿

猜你喜欢

  • flask框架路由常用定义方式总结

    2021-04-18 22:12:29
  • SQL Server 2005改进后的几个实用新特性

    2008-05-07 19:16:00
  • Python控制Firefox方法总结

    2023-09-08 04:00:17
  • 在ASP.NET 2.0中操作数据之二十五:大数据量时提高分页的效率

    2023-07-11 09:05:31
  • 浅谈python日志的配置文件路径问题

    2021-01-17 23:39:51
  • Python常用数据分析模块原理解析

    2023-07-12 03:46:31
  • ASP编程如何执行存储过程?

    2010-03-17 20:56:00
  • 豆瓣可以做而且值得做的几件事情

    2009-04-24 12:07:00
  • Python实现FTP文件传输的实例

    2021-12-16 02:35:31
  • asp分类算法要解决的问题

    2009-09-10 16:49:00
  • Mybatis-Plus读写Mysql的Json字段的操作代码

    2024-01-15 15:34:29
  • Python机器学习NLP自然语言处理Word2vec电影影评建模

    2022-09-07 09:40:35
  • Tornado 多进程实现分析详解

    2022-06-13 20:51:56
  • python提取word文件中的所有图片

    2022-04-10 13:56:39
  • Python批量处理图片大小尺寸方法详解

    2021-12-11 23:12:07
  • sql 存储过程分页代码 支持亿万庞大数据量

    2024-01-24 03:31:00
  • 解决Keras中Embedding层masking与Concatenate层不可调和的问题

    2022-06-02 17:02:16
  • python实现linux下使用xcopy的方法

    2022-08-16 07:52:09
  • SQL Server2016正式版安装配置方法图文教程

    2024-01-18 10:21:52
  • JavaScript观察者模式(publish/subscribe)原理与实现方法

    2024-04-10 10:44:15
  • asp之家 网络编程 m.aspxhome.com