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


Posted in Javascript onJune 13, 2019

前言

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

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

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

实现思路

实现该动画效果,首先需要给每个卡片添加一个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}}">

实现效果

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

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
google地图的路线实现代码
Aug 20 Javascript
基于jquery的button默认enter事件(回车事件)。
May 18 Javascript
jQuery 三击事件实现代码
Sep 11 Javascript
js生成随机数的方法实例
Oct 16 Javascript
Jquery判断form表单数据是否变化
Mar 30 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
May 24 Javascript
JavaScript事件用法浅析
Oct 31 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
Jul 12 Javascript
微信小程序使用navigateTo数据传递的实例
Sep 26 Javascript
vue+element树组件 实现树懒加载的过程详解
Oct 21 Javascript
vue中动态select的使用方法示例
Oct 28 Javascript
微信小程序语音同步智能识别的实现案例代码解析
May 29 Javascript
微信小程序前端自定义分享的实现方法
Jun 13 #Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
Jun 13 #Javascript
javascript实现的字符串转换成数组操作示例
Jun 13 #Javascript
javascript实现的时间格式加8小时功能示例
Jun 13 #Javascript
深入了解JavaScript代码覆盖
Jun 13 #Javascript
js使用cookie实现记住用户名功能示例
Jun 13 #Javascript
探索JavaScript中私有成员的相关知识
Jun 13 #Javascript
You might like
一个简单的php实现的MySQL数据浏览器
2007/03/11 PHP
PHP $_SERVER详解
2009/01/16 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
PHP基于mcript扩展实现对称加密功能示例
2019/02/21 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
一些常用的JavaScript函数(json)附详细说明
2011/05/25 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
微信小程序实现图片自适应(支持多图)
2017/01/25 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
python基于openpyxl生成excel文件
2020/12/23 Python
一款纯css3实现的tab选项卡的实列教程
2014/12/11 HTML / CSS
个人求职简历的自我评价范文
2013/10/09 职场文书
通用求职信范文模板分享
2013/12/27 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
社团个人总结范文
2015/03/05 职场文书
2015年销售助理工作总结
2015/05/11 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python
从np.random.normal()到正态分布的拟合操作
2021/06/02 Python