数字滚动动画~

前言

数字从0.00滚动到某个数值的动画

实现(React版本)

Dom

<div className="number" ref={numberRef}>0.00</div>

 JS

  const _initNumber = () => {
    const targetNumber = 15454547.69;
    const duration = 1500;
    const numberElement = numberRef.current;
    if(!numberElement)return
    let startTime = null;

    function formatNumber(num) {
        return num.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
    }

    function animateNumber(timestamp) {
        if (!startTime) startTime = timestamp;
        const progress = timestamp - startTime;
        const currentNumber = Math.min(progress / duration * targetNumber, targetNumber);
        const currentFormattedNumber = formatNumber(currentNumber);
        const totalLength = formatNumber(targetNumber).length;
        const currentLength = Math.floor(progress / duration * totalLength);
        const displayNumber = currentFormattedNumber.slice(0, currentLength);

        numberElement.textContent = displayNumber;

        if (progress < duration) {
            requestAnimationFrame(animateNumber);
        } else {
            numberElement.textContent = formatNumber(targetNumber);
        }
    }

    requestAnimationFrame(animateNumber);
  }

效果

 

最后

通过requestAnimationFrame去实现动画效果,toLocaleString做整数数值三位分割~

相关推荐

  1. android recyclerview 中的animation滚动动画停止了?

    2024-07-10 22:28:04       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 22:28:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 22:28:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 22:28:04       45 阅读
  4. Python语言-面向对象

    2024-07-10 22:28:04       55 阅读

热门阅读

  1. H5小游戏开发,广告游戏开发制作

    2024-07-10 22:28:04       21 阅读
  2. 电脑多开卡顿的所有原因汇总

    2024-07-10 22:28:04       22 阅读
  3. 【C语言】通过fgets和fscanf了解读写文件流的概念

    2024-07-10 22:28:04       16 阅读
  4. mac上修改jupyterlab工作目录

    2024-07-10 22:28:04       22 阅读
  5. mongoexport导出聚合查询的mongo数据

    2024-07-10 22:28:04       17 阅读