JavaScript如何实现余额数字滚动效果
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,今天就跟大家聊聊有关JavaScript如何实现余额数字滚动效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.实现背景上周在一个完成任务领
千家信息网最后更新 2026年11月01日JavaScript如何实现余额数字滚动效果1.实现背景
2.实现思路
3.实现过程
今天就跟大家聊聊有关JavaScript如何实现余额数字滚动效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
1.实现背景
上周在一个完成任务领取红包的活动需求中,需要实现一个用户点击按钮弹出领取红包弹窗后,在关 闭弹窗返回原来的页面时,页面余额数字部分要展示一个每一位数字滚动后的效果。
因为之前没做过这样的效果,一开始也不知道要如何实现,本来想在GitHub上找一下相关的库,看到一个最高star的库,但发现它是依赖jQuery的,而且不可以npm包引入。感觉就很没有必要,本来项目是react框架的,就是要尽量少的操作DOM,为了解决这个滚动就要引入jQuery,感觉不太合适。所以我决定还是自己实现,先看了一下别人的思路,然后自己再去实现。
2.实现思路
其实就是将传入的带滚动的n位数字拆分成每一个要滚动的数,然后动态的创建装着滚动到每一位相应数字的容器,然后放入传入的目标容器中。滚动到每一位相应的数字的实现可以通过动态创建从0到相应数字的间隔数的div,div的内容分别为对应的数字,就像一个竖直写着从0-n的长纸条,然后拉着它在指定时间内从0上拉到目标数字。
3.实现过程
既然要封装,还是写成class的形式吧,话不多说,直接上代码吧
/** * 实现数字滚动的效果的类 */class DigitScroll { constructor(options) { //获取容器的DOM,没有则抛出错误 this.container = document.querySelector(options.container); if (!this.container) { throw Error("no container"); } this.container.style.overflow = "hidden"; this.container.style.display = "flex"; //可视容器高度 也是滚动间隔距离,容器要设置高度,否则默认30px this.rollHeight = parseInt(getComputedStyle(this.container).height) || 30; this.container.style.height = this.rollHeight + "px"; } roll(num) { // 将传入的要滚动的数字拆分后初始化每一位数字的容器 this.initDigitEle(num); const numEles = this.container.querySelectorAll(".single-num"); // 遍历生成每一位数字的滚动队列,如滚动到7,则生成内容为0,1,2,3,4,5,6,7的7个div,用于滚动动画 [...numEles].forEach((numEle, index) => { const curNum = 0; let targetNum = Number(this.numberArr[index]); if (curNum >= targetNum) { targetNum = targetNum + 10; } let cirNum = curNum; // 文档碎片,拼凑好后一次性插入节点中 const fragment = document.createDocumentFragment(); // 生成从0到目标数字对应的div while (targetNum >= cirNum) { const ele = document.createElement("div"); ele[xss_clean] = cirNum % 10; cirNum++; fragment.appendChild(ele); } numEle[xss_clean] = ""; numEle.appendChild(fragment); //重置位置 numEle.style.cssText += "-webkit-transition-duration:0s;-webkit-transform:translateY(0)"; setTimeout(() => { numEle.style.cssText += `-webkit-transition-duration:1s;-webkit-transform:translateY(${ -(targetNum - curNum) * this.rollHeight }px);`; }, 50); }); } // 初始化容器 initDigitEle(num) { // 数字拆分位数 const numArr = num.toString().split(""); // 文档碎片,拼凑好后一次性插入节点中 const fragment = document.createDocumentFragment(); numArr.forEach((item) => { const el = document.createElement("div"); // 数字是要滚动的,非数字如.是不滚动的 if (/[0-9]/.test(item)) { el.className = "single-num"; el.style.height = this.rollHeight + "px"; el.style.lineHeight = this.rollHeight + "px"; } else { el[xss_clean] = item; el.className = "no-move"; el.style.verticalAlign = "bottom"; } // el.style.float='left'; fragment.appendChild(el); }, []); this.container[xss_clean] = ""; this.container.appendChild(fragment); // 存储滚动的数字 this.numberArr = numArr.filter((item) => /[0-9]/.test(item)); }}看完上述内容,你们对JavaScript如何实现余额数字滚动效果有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
数字
容器
效果
内容
余额
目标
生成
一次性
动态
就是
思路
感觉
文档
碎片
红包
节点
还是
页面
高度
合适
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
伟宏互联网科技
上海卓越科技互联网
中国互联网科技工作委员会毛军
科技和互联网公司
美国互联网科技巨头监管
卓越科技(互联网 )
贷财互联网科技
苏州互联网科技贷款公司
哈尔滨新华互联网科技
卫星互联网科技股票
隆华科技工业互联网
以后互联网后是啥科技
广西互联网科技孵化中心
卓翼科技产业互联网合作
烟台灵鸽互联网科技有限公司
产业互联网科技服务公司
富国互联网科技002692
陕西云淼互联网科技公司
黑龙江互联网科技公司
互联网科技企业文化
上海卓越科技互联网
广州善班互联网科技
上海万想互联网科技
科技赋能互联网健康
荆州市昕露互联网络科技有限公司
996高科技互联网公司
深圳艾果互联网通讯科技
黑云互联网科技有限公司
图游互联网科技
现代科技的标志之一的互联网