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


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+JSon 无刷新分页实现代码
Apr 01 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
Dec 17 Javascript
学习JavaScript鼠标响应事件
Dec 25 Javascript
基于javascript实现彩票随机数生成(简单版)
Apr 17 Javascript
JSONP原理及简单实现
Jun 08 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
Feb 19 Javascript
JS删除数组里的某个元素方法
Feb 03 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
Feb 26 Javascript
vue input输入框模糊查询的示例代码
May 22 Javascript
Vue左滑组件slider使用详解
Aug 21 Javascript
小程序点餐界面添加购物车左右摆动动画
Sep 23 Javascript
JavaScript实现H5接金币功能(实例代码)
Feb 22 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的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
js模拟滚动条(横向竖向)
2013/02/22 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
2013/10/01 Javascript
JsRender实用入门教程
2014/10/31 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
使用yeoman构建angular应用的方法
2017/08/14 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
微信小程序结合Storage实现搜索历史效果
2019/05/18 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
JQuery样式与属性设置方法分析
2019/12/07 jQuery
小程序自动化测试的示例代码
2020/08/11 Javascript
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
Python实现扫码工具的示例代码
2020/10/09 Python
利用python 下载bilibili视频
2020/11/13 Python
瑞典网上购买现代和复古家具:Reforma
2019/10/21 全球购物
最新的互联网创业计划书
2014/01/10 职场文书
新闻学专业个人求职信写作
2014/02/04 职场文书
志愿者活动总结
2014/04/28 职场文书
初中新生军训方案
2014/05/13 职场文书
财务工作个人总结
2015/02/27 职场文书
2015年人民调解工作总结
2015/05/18 职场文书
体育教师教学随笔
2015/08/15 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
nginx+lua单机上万并发的实现
2021/05/31 Servers
Golang生成Excel文档的方法步骤
2021/06/09 Golang
Nginx的gzip相关介绍
2022/05/11 Servers