首页 > 作文

JavaScript实现余额数字滚动效果

更新时间:2023-04-04 05:05:09 阅读: 评论:0

目录
1.实现背景 2.实现思路 3.实现过程

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.querylector(options.container);    if (!this.container) {      throw error("no container");    }    this.container.style.overflow = "hidden";    this.container.style.display = "flex";    //可视容器高度 也是滚动间隔距离,容器要设六级通过率置高度,否则默认30px    this.rollheight = parint(getcomputedstyle(this.container).height) || 30;    this.container.style.height = this.rollheight + "px";  }  roll(num) {    // 将传入的要滚动的数字拆分后初始化每一位数字的容器    this.initdigitele(num);    const numeles = this.container.querylectorall(".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.innerhtml = cirnum % 10;        cirnum++;        fragment.appendchild(ele);      }      numele.innerhtml = "";      numele.appendchild(fragment);      //重置位置      numele.style.csste学生党平板推荐xt +=        "-webkit-transition-duration:0s;-webkit-transform:translatey(0)";      ttimeout(() => {        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";      } el {        el.innerhtml = item;        el.classname = "no-move";        el.style.verticalalign = "bottom";      }      // el.style.float='left';      fragment.appendchild(el);    }, []);    this.conta奥运金牌奖励多少钱iner.innerhtml = "";    t文化管理专业his.container.appendchild(fragment);    // 存储滚动的数字    this.numberarr = numarr.filter((item) => /[0-9]/.test(item));  }}

到此这篇关于javascript实现余额数字滚动效果的文章就介绍到这了,更多相关javascript实现 数字滚动 内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 05:05:07,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/d325ae7c4fefe526529dd0e11f5cd4f0.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:JavaScript实现余额数字滚动效果.doc

本文 PDF 下载地址:JavaScript实现余额数字滚动效果.pdf

标签:数字   容器   效果   思路
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图