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


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获取下拉列表的值为null的解决方法
Mar 18 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
Jan 24 Javascript
thinkphp中常用的系统常量和系统变量
Mar 05 Javascript
JQuery实现表格动态增加行并对新行添加事件
Jul 30 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
Sep 19 Javascript
jQuery代码实现对话框右上角菜单带关闭×
May 03 Javascript
jQuery Mobile框架中的表单组件基础使用教程
May 17 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
Apr 11 jQuery
vue2 中如何实现动态表单增删改查实例
Jun 09 Javascript
深入理解Promise.all
Aug 08 Javascript
Webstorm2016使用技巧(SVN插件使用)
Oct 29 Javascript
Js通过AES加密后PHP用Openssl解密的方法
Jul 12 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 版本]
2007/03/20 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
html中使用javascript调用本地程序(exe、doc等)实现代码
2013/04/26 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
Python 基础之字符串string详解及实例
2017/04/01 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
Python基于whois模块简单识别网站域名及所有者的方法
2018/04/23 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
Python 如何查找特定类型文件
2020/08/17 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
大学生专业个人学习的自我评价
2013/10/26 职场文书
大学生党课思想汇报
2013/12/29 职场文书
房地产融资计划书
2014/01/10 职场文书
班级标语大全
2014/06/21 职场文书
小学教师党员承诺书
2015/04/27 职场文书
农业项目投资意向书
2015/05/09 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
加薪申请报告范本
2015/05/15 职场文书
装修安全责任协议书
2016/03/22 职场文书