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


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 相关文章推荐
jQuery中unwrap()方法用法实例
Jan 16 Javascript
JavaScript实现页面跳转的方式汇总
May 16 Javascript
js改变style样式和css样式的简单实例
Jun 28 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
Aug 01 Javascript
js表单元素checked、radio被选中的几种方法(详解)
Aug 22 Javascript
JS克隆,属性,数组,对象,函数实例分析
Nov 26 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
Dec 21 Javascript
详解angularjs实现echart图表效果最简洁教程
Nov 29 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
Mar 06 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
May 12 Javascript
Vue实现push数组并删除的例子
Nov 01 Javascript
如何区分vue中的v-show 与 v-if
Sep 08 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(6) 面向对象
2010/02/16 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
2011/09/25 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
Vue核心概念Getter的使用方法
2019/01/18 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
Python内置模块turtle绘图详解
2017/12/09 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
Python集合基本概念与相关操作实例分析
2019/10/30 Python
python实现实时视频流播放代码实例
2020/01/11 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
美国Max仓库:Max Warehouse
2020/05/31 全球购物
什么是类的返射机制
2016/02/06 面试题
实习护士自我鉴定
2013/10/13 职场文书
护士自荐信怎么写
2013/10/18 职场文书
制药工程专业毕业生推荐信
2013/12/24 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
学校师德师风整改措施
2014/10/27 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
golang的文件创建及读写操作
2022/04/14 Golang
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python