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


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 相关文章推荐
JS验证控制输入中英文字节长度(input、textarea等)具体实例
Jun 21 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
Oct 22 Javascript
js获得网页背景色和字体色的方法
Mar 21 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
May 18 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
Sep 26 Javascript
js实现获取鼠标当前的位置
Dec 14 Javascript
JavaScript 动态三角函数实例详解
Jan 08 Javascript
ES6入门教程之let和const命令详解
May 17 Javascript
jquery实现图片放大点击切换
Jun 06 jQuery
ionic+html5+API实现双击返回键退出应用
Sep 17 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
Oct 17 Javascript
vue iview 隐藏Table组件里的某一列操作
Nov 13 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编程网上资源导航
2006/10/09 PHP
php中require和require_once的区别说明
2014/02/27 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
Git命令之分支详解
2021/03/02 PHP
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
前台js调用后台方法示例
2013/12/02 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
Angular Module声明和获取重载实例代码
2016/09/14 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
用python写asp详细讲解
2013/12/16 Python
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
谈谈Python中的while循环语句
2019/03/10 Python
python3实现微型的web服务器
2019/09/03 Python
英国电器零售商:PRC Direct
2018/06/21 全球购物
女性时尚在线:IVRose
2019/02/23 全球购物
Shell编程面试题
2012/05/30 面试题
给孩子的新年寄语
2014/04/08 职场文书
调解协议书
2014/04/16 职场文书
委托证明书
2014/09/17 职场文书
财会专业大学生求职信
2014/09/26 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
Django操作cookie的实现
2021/05/26 Python
Ruby处理YAML和json数据
2022/04/18 Ruby