我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript怎么实现余额数字滚动效果

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript怎么实现余额数字滚动效果

这篇文章主要介绍“JavaScript怎么实现余额数字滚动效果”,在日常操作中,相信很多人在JavaScript怎么实现余额数字滚动效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”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.innerHTML = cirNum % 10;

        cirNum++;

        fragment.appendChild(ele);

      }

      numEle.innerHTML = "";

      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.innerHTML = item;

        el.className = "no-move";

        el.style.verticalAlign = "bottom";

      }

      // el.style.float='left';

      fragment.appendChild(el);

    }, []);

    this.container.innerHTML = "";

    this.container.appendChild(fragment);

    // 存储滚动的数字

    this.numberArr = numArr.filter((item) => /[0-9]/.test(item));

  }

}

到此,关于“JavaScript怎么实现余额数字滚动效果”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScript怎么实现余额数字滚动效果

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaScript如何实现余额数字滚动效果

今天就跟大家聊聊有关JavaScript如何实现余额数字滚动效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.实现背景上周在一个完成任务领取红包的活动需求中,需要实现一个用户点击
2023-06-22

jquery数字滚动效果怎么实现

您可以使用jQuery的.animate()方法来实现数字滚动效果。首先,您需要一个HTML元素来显示数字。例如,一个div元素:```html0
2023-08-09

python数字滚动效果怎么实现

要实现数字滚动效果,可以使用Python的Tkinter库来创建一个简单的窗口应用程序。以下是一个示例代码,演示如何实现数字滚动效果:import tkinter as tkclass NumberRollingApp:def __ini
python数字滚动效果怎么实现
2024-03-01

Javascript中怎么实现逐行滚动文字效果

Javascript中怎么实现逐行滚动文字效果,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。//FILE: scrolltext.js CREATED: DannyKang
2023-06-03

JavaScript怎么实现长图滚动效果

小编给大家分享一下JavaScript怎么实现长图滚动效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!JavaScript是什么JavaScript是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器
2023-06-14

Android仿支付宝中余额宝的数字动画效果

实现效果图:下面是具体代码,可直接复制:package com.lcw.rabbit.widget; import android.animation.ObjectAnimator; import android.content.Conte
2022-06-06

Android实现文字滚动效果

Android 实现文字滚动效果,自己写了个timer小计时器,textview文字上下翻动效果:public class AutoTextView extends TextSwitcher implementsViewSwitcher.V
2022-06-06

JavaScript怎么实现页面无缝滚动效果

这篇文章主要介绍“JavaScript怎么实现页面无缝滚动效果”,在日常操作中,相信很多人在JavaScript怎么实现页面无缝滚动效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript怎么实
2023-06-29

jquery怎么实现文字上下滚动效果

你可以使用jQuery的animate()方法来实现文字的上下滚动效果。以下是一个示例代码:HTML部分:```htmlLorem ipsum dolor sit ametConsectetur adipiscing elitSed do
2023-08-09

怎么用JavaScript实现图片循环滚动效果

要实现图片循环滚动效果,可以通过JavaScript结合CSS实现。下面是一个简单的示例:HTML部分:
怎么用JavaScript实现图片循环滚动效果
2024-03-02

如何使用JavaScript实现字体左右滚动效果

随着社会的不断发展,前端开发技术也日益成熟。其中,JavaScript作为最主要的Web前端开发语言之一,拥有着丰富的扩展性和可操作性。在实际开发中,我们可以使用JavaScript来实现各种各样的动态效果,如字体左右滚动效果。本篇文章将详细介绍如何使用JavaScript实现字体左右滚动效果。一、html结构首先,我们需要在html中创建一个容器,用于显示我们要滚动的字体。h
2023-05-14

编程热搜

目录