微信小程序使用数字滚动动画
实现思路
- 为了实现数字的无限滚动效果,每个数字框的内部,其实包含了两组0~9的view,每个View的高度都一样
- 数字框内使用绝对定位,通过调整top位置,显示出指定的数字
- 使用transtion动画,top发生变化时就会滚动,然后通过指定动画的delay、duration,使数字之间延时动画
项目代码
js文件
Component({properties: {value: {type: String,value: ''},/** 一次滚动耗时 单位ms */duration: {type: Number,value: 1600},/** 每个数字之间的延迟滚动 */delay: {type: Number,value: 200}},data: {valArr: [],aniArr: [], // 动画列表,和valArr对应numArr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], // 所有数字itemHeight: 0 // 数字项的高度},observers: {value: function (newVal) {// 监听value变化,格式化为valArrlet valArr = []if (newVal) {valArr = newVal.split('').map(o => {return { val: o, isNaN: isNaN(o)}})}this.setData({valArr: valArr})this.getNumberHeight()}},methods: {/** 计算数字高度 */getNumberHeight() {if (this.data.itemHeight > 0) {this.startScrollAni()return}const query = this.createSelectorQuery()query.select('.number-item').boundingClientRect()query.exec((res) => {this.setData({itemHeight: res[0].height})this.startScrollAni()})},/** 开始滚动动画 */startScrollAni() {if (this.data.itemHeight <= 0) returnconst aniArr = []this.data.valArr.forEach((item, index) => {if(!item.isNaN) {aniArr.push(`transition-delay: ${this.data.delay * index}ms; top: ${-this.data.itemHeight * (this.data.numArr[parseInt(item.val)] + 10)}px;`)} else {aniArr.push(null)}})this.setData({aniArr: aniArr})}}
})
wxml文件
<view class="scroll-number container-class"><block wx:for="{{valArr}}" wx:key="index"><view wx:if="{{item.isNaN}}" class="scroll-number-item number-dot dot-class">{{item.val}}</view><view wx:else class="scroll-number-item number-item item-class"><view class="scroll-ani" style="transition-duration: {{duration}}ms; {{aniArr[index]}}"><view wx:for="{{numArr}}" wx:for-item="num" wx:for-index="idx" wx:key="idx" class="num{{num}}">{{num}}</view><view wx:for="{{numArr}}" wx:for-item="num" wx:for-index="idx" wx:key="idx" class="num{{num}}">{{num}}</view></view></view></block>
</view>
wxss文件
/* components/scroll-number/index.wxss */
.scroll-number {display: flex;align-items: flex-end;
}
.scroll-number-item {color: #0079FE;font-size: 48rpx;font-weight: bold;margin: 0 24rpx;font-family: Microsoft YaHei;
}
.number-item {background-color: rgba(0, 121, 254, 0.2);border-radius: 8rpx;width: 56rpx;height: 72rpx;line-height: 72rpx;overflow: hidden;text-align: center;position: relative;
}
.number-dot {margin: 0 12rpx;
}
.scroll-ani {position: absolute;top: 0;left: 0;width: 100%;height: 100%;transition: all 2s ease-in-out 0s;
}
在这里,我是做了一个封装的组件,调用方式如下
SumPrice是指最终跳动停止的数值
<donation-transtion value="{{SumPrice}}"></donation-transtion>
微信小程序使用数字滚动动画相关推荐
- 微信小程序页面上下滚动、左右滑动(二)
系列文章目录 微信小程序页面上下滚动.左右滑动(一) 文章目录 系列文章目录 前言 项目结构 解决问题1 1.pretest页面 2.test页面 解决问题2 总结 参考 前言 在上一篇文章,讲解了再 ...
- 微信小程序列表加载动画示例
微信小程序列表加载动画 微信小程序列表加载动画示例 实现思路 什么是动画? 导航栏设置 列表动画加载 完整代码demo 微信小程序列表加载动画示例 初学微信小程序开发,记录一下.网上找了很久这种效果, ...
- 微信小程序实现文字滚动
微信小程序实现文字滚动 1.wxml <view class="container"><view class='list' animation="{{a ...
- 微信小程序页面竖向滚动逻辑
微信小程序页面竖向滚动逻辑 1.实现下面类似的数组 注:下面这个生成的数组最好是整数,滑动的时候会失去精度的,要不然你永远会差一点,让你崩溃的.而且你永远不知道差在哪里. this.leftScrol ...
- 解决微信小程序ios端滚动卡顿的问题
解决微信小程序ios端滚动卡顿的问题 参考文章: (1)解决微信小程序ios端滚动卡顿的问题 (2)https://www.cnblogs.com/goloving/p/10563472.html 备 ...
- php小程序 100行左右,微信小程序 左右分类滚动列表
今天需求个类似得到app分类的功能,效果如图: 左右分别滚动,互不干扰,先把简单的布局和样式搭好. 左侧分类 右侧顶部分类 右侧列表 .flex_row{display: flex;flex-dire ...
- 零基础也能学会的微信小程序制作横向滚动布局
零基础也能学会的微信小程序制作横向滚动布局 准备工作: 微信开发者工具 APPID或测试号 创建一个JavaScript基本框架(如下图) 动手做起来吧~ index.wxml 最终效果: <! ...
- 小程序如何做成html的滚动字幕,微信小程序实现文字滚动
本文实例为大家分享了微信小程序实现文字滚动的具体代码,供大家参考,具体内容如下 wxml: 显示完后再显示: {{text}} 出现白边后即显示: {{text}} {{text}} wxss: .e ...
- 微信小程序各种酷炫动画
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/anda0109/article/de ...
最新文章
- Linux下修改mysql的root密码后数据库消失怎么处理
- 协作与协同有什么区别_OA软件, BPM系统, 移动办公系统, 协同办公系统到底有什么区别...
- Linux共享文件夹中毒,linux服务器中毒利用Find查找病毒例子
- 【NLP保姆级教程】手把手带你CNN文本分类(附代码)
- ubuntu16.04的WPS不识别jpeg图片格式
- ubuntu 22.04 修复 key is stored in legacy trusted.gpg keyring
- 模板文件, ruby erb 与 python format
- WebAR+教育丨帮助老师课堂教学,教育展览
- SpringBoot引入第三方SDK以及打包
- [转]JavaScript和html5 canvas生成圆形印章
- 千峰课程网安笔记(1)
- 专精特新企业认定条件 这些条件要满足
- 人群密度检测matlab算法,基于视频的人员密度检测.doc
- DPABI(用于脑成像的数据处理和分析的工具箱)的下载和安装步骤
- 深度学习中的温度参数(temperature parameter)--疑问待解决
- 无线显示但是无法上网络连接服务器,无线已连接上但还是不能上网该怎么处理...
- 去除em斜体的方法_鱼缸水体pH值对观赏鱼的影响,以及偏高或偏低的调节方法...
- grammer Analyzer
- H264_Lite高清视频编码器/解码器IP核(FPGA/ASIC通用)
- 自动化测试脚本-帐号注册到激活
热门文章
- Windows10设置挂起(休眠)
- 本地服务:无法访问此网站 localhost 拒绝了我们的连接请求。ERR_CONNECTION_REFUSED
- 基于STM32设计物联网在线智能称重系统(OneNet)_2022
- Excel学习日记:L33-二八法则的神奇图表-柏拉图(帕累托图)
- 【office】Visio 2016 画大括号(花括号) + 调整花括号尖角居中
- c语言如何使回车后回到上一行,c++输出换行后如何回到上一行继续输出
- Python---第8天---字符串
- 使用PC端谷歌Chrome浏览器浏览手机网页 修改PC端谷歌Chrome浏览器UA
- 【Java练习】2022个人所得税计算
- java基础知识整理