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


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 相关文章推荐
ExtJS GTGrid 简单用户管理
Jul 01 Javascript
关于jQuery的inArray 方法介绍
Oct 08 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
Dec 11 Javascript
JavaScript 里的类数组对象
Apr 08 Javascript
javascript日期处理函数,性能优化批处理
Sep 06 Javascript
轻松掌握JavaScript享元模式
Aug 27 Javascript
angularjs点击图片放大实现上传图片预览
Feb 24 Javascript
vue实现商城购物车功能
Nov 27 Javascript
vue项目中公用footer组件底部位置的适配问题
May 10 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
Apr 23 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
Mar 07 Javascript
小程序自定义圆形进度条
Nov 17 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
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
php simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
jQuery 1.0.2
2006/10/11 Javascript
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
AngularJs+Bootstrap实现漂亮的计算器
2017/08/10 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
python socket 超时设置 errno 10054
2014/07/01 Python
深入理解Python中的内置常量
2017/05/20 Python
Python查看微信撤回消息代码
2018/06/07 Python
python实现代码统计程序
2019/09/19 Python
python框架flask表单实现详解
2019/11/04 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
时装界的“朋克之母”:Vivienne Westwood
2017/07/06 全球购物
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
运动会广播稿200字
2014/01/15 职场文书
一年级家长会邀请函
2014/01/25 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
机动车登记业务委托书
2014/10/08 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
全国法院系统开展党的群众路线教育实践活动综述(全文)
2014/10/25 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
开国大典观后感
2015/06/04 职场文书
spring boot中nativeQuery的用法
2021/07/26 Java/Android
python turtle绘图命令及案例
2021/11/23 Python
Vue的生命周期一起来看看
2022/02/24 Vue.js