HTML JavaScript 数字变化特效

news2025/1/15 19:57:48

效果

案例一:上下滚动

案例二:本身变化

代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>数字滚动变化动画</title>
  </head>
  <style>
    *{
        margin:0;
        padding: 0;
    }
    /* 滚动变化相关 */
    .valScrollAmt-box {
      display: flex;
      height: 50px;
      overflow: hidden;
      font-size: 50px;
      font-weight: bold;
      line-height:50px;
      margin: 10px 10px;

    }
    .digit-container {
      display: flex;
      flex-direction: column;
      line-height: 50px;
    }

    /* 动态变化 */
    .valChangeAmt-box {
      font-size: 50px;
      font-weight: bold;
      line-height: 50px;
      margin: 10px 10px;

    }
    .div1 {
      background-color: aqua;
      padding: 5px 5px;
    }
    .div2 {
      background-color: bisque;
      padding: 5px 5px;

    }
    h1{
        font-size: 50px;
        margin: 10px 10px;
    }
  </style>
  <body>
    <div class="div1">
      <h1>案例1:滚动式变化</h1>
      <div id="valScrollAmt" class="valScrollAmt-box"></div>
    </div>
    <div class="div2">
      <h1>案例2:动态变化</h1>
      <div id="valChangeAmt" class="valChangeAmt-box">0</div>
    </div>
  </body>
  <script src="jquery-3.5.1.min.js"></script>
  <script>
    // 滚动式变化
    class animateObj {
      constructor(id, startNum, step, time) {
        this.id = id; //容器唯一标识
        this.startNum = startNum; // 初始数值
        this.savePositionArr = []; //存放旧数据的位置数组
      }

      // 数字转成数组
      number2Arr(digit) {
        var num_arr = [];
        for (var i = 0; i < digit.length; i++) {
          num_arr.push(digit.charAt(i));
        }
        return num_arr;
      }

      // dom构建
      amtDom(arr) {
        var str = "";
        for (var i = 0; i < arr.length; i++) {
          if (parseInt(arr[i]) >= 0) {
            str +=
              '<div class="scrollItem digit-container" data-show=' +
              arr[i] +
              ">\
                            <span>0</span>\
                            <span>1</span>\
                            <span>2</span>\
                            <span>3</span>\
                            <span>4</span>\
                            <span>5</span>\
                            <span>6</span>\
                            <span>7</span>\
                            <span>8</span>\
                            <span>9</span>\
                        </div>";
          } else {
            str += '<div class="sign-box"><span>' + arr[i] + "</span></div>";
          }
        }
        return str;
      }

      // 将数字转换为逗号隔开的千分位格式
      num2qfw(num) {
        num += "";
        if (!num.includes(".")) num += ".";
        return num
          .replace(/(\d)(?=(\d{3})+\.)/g, function ($0, $1) {
            return $1 + ",";
          })
          .replace(/\.$/, "");
      }

      animation() {
        const _this = this;
        var height = $("#" + this.id).height();
        $(".scrollItem").each(function (i) {
          let scrollTopOld, scrollTopNew;
          let num = parseInt($(this).data("show"));
          scrollTopNew = height * num;
          if (!_this.savePositionArr[i]) {
            _this.savePositionArr[i] = 0;
          }
          scrollTopOld = _this.savePositionArr[i];
          $(this).css("margin-top", -scrollTopOld);
          if (scrollTopOld != scrollTopNew) {
            $(this).animate({ marginTop: -scrollTopNew }, 1500);
          }

          _this.savePositionArr[i] = scrollTopNew;
        });
      }

      init() {
        const _sNum = this.num2qfw(this.startNum);
        const numArr = this.number2Arr(_sNum);
        $("#" + this.id).html(this.amtDom(numArr));
        this.animation();
      }
    }
    let animate = new animateObj("valScrollAmt", 1235.8);
    animate.init();
    setInterval(function () {
      animate.startNum += 3;
      animate.init();
    }, 4000);

    // 动态变化
    // 将数字转换为逗号隔开的千分位格式
    function num2qfw(num) {
      num += "";
      if (!num.includes(".")) num += ".";
      return num
        .replace(/(\d)(?=(\d{3})+\.)/g, function ($0, $1) {
          return $1 + ",";
        })
        .replace(/\.$/, "");
    }

    // 数值改变动画函数
    function magic_number(value) {
      var num = $("#valChangeAmt");
      num.animate(
        { count: value },
        {
          duration: 500,
          step: function () {
            num.text(num2qfw(parseInt(this.count)));
          },
          complete: function () {
            num.text(num2qfw(parseInt(value)));
          },
        }
      );
    }
    let oldVal = 9374401;
    function update() {
      magic_number(oldVal);
      oldVal += Math.random() * 100;
    }
    update();
    setInterval(update, 3000); //3秒钟执行一次 update();
  </script>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1401130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

debian12.4配置

文章目录 debian12.4配置概述笔记将非root用户添加到sudo组更换国内源配置ssh的客户端访问END debian12.4配置 概述 在虚拟机中装了一个debian12.4, 想配置ssh客户端连接, 出了问题. 配置乱了, 还好长了个心眼, 做了快照. 发现2个问题: debian12.4默认安装完, 有ssh, 先检查…

【Linux对磁盘进行清理、重建、配置文件系统和挂载,进行系统存储管理调整存储结构】

Linux 调整存储结构 前言一、查看磁盘和分区列表二、创建 ext4 文件系统&#xff0c;即&#xff1a;格式化分区为ext4文件系统。1.使用命令 mkfs.ext4 (make file system)报错如下&#xff1a;解决办法1&#xff1a;&#xff08;经测试&#xff0c;不采用&#xff09;X解决办法…

【PICO】【Unity】【VR】如何对打包后的PICO项目有效Debug

【背景】 PICO项目打包后再运行就看不到Console了。当然,会有各类专业的Debug工具。 有一类Debug的工具是Preview形式下展示Debug信息,但是发现Preview成功不见得打包也成功。 打包后也会有一些Debug工具,不过这里我给出自己的简单解决办法。 【解决方案】 Unity Console…

SQL慢语句执行的很慢,如何分析优化呢,(如何优化的呢?)

慢查询出现的情况&#xff1a; SQL执行慢如何解决&#xff1f; 可以采用MySQL自带的分析工具Explain。 通过key和key_len检查是否命中了索引&#xff08;如果你已经添加了索引&#xff0c;还可以判断索引是否失效&#xff09;通过type字段查看SQL是否有进一步优化的空间&#…

JavaScript 之 promise

一、异步任务的处理 封装和调用不是同一个人&#xff0c;不清楚如何调用设计者不好设计&#xff0c;调用者调用很麻烦从一个实际的例子来作为切入点&#xff1a; 调用一个函数&#xff0c;这个函数中发送网络请求&#xff08;可以用定时器来模拟&#xff09;如果发送网络请求成…

flutter跨平台开发模板,继承get和dio,实现全局loading和快速更改名称和图标icon

flutter_windows 一个跨平台的flutter开发模板&#xff0c;使用流行的get来管理路由&#xff0c;使用getx来管理数据状态&#xff0c;并且配置了国际化支持。使用dio来管理网络请求&#xff0c; 使用shared_preferences实现本地临时数据存储&#xff0c;并且实现了全局loading…

【漏洞复现】Hikvision综合安防管理平台env信息泄漏漏洞

Nx01 产品简介 Hikvision&#xff08;海康威视&#xff09;是一家在中国颇具影响力的安防公司&#xff0c;其网络摄像头产品在市场上占据了相当大的份额。综合安防管理平台基于“统一软件技术架构”理念设计&#xff0c;采用业务组件化技术&#xff0c;满足平台在业务上的弹性扩…

【GitHub项目推荐-开源的任务管理工具】【转载】

推荐一个开源的任务管理工具&#xff0c;该工具会提供各类文档协作功能、在线思维导图、在线流程图、项目管理、任务分发、即时 IM&#xff0c;文件管理等等。该开源项目使用到 Vue、Element-UI、ECharts 等技术栈。 开源地址&#xff1a;www.github.com/kuaifan/dootask 预览地…

【leetcode】回溯总结

本文内容来自于代码随想录https://www.programmercarl.com/ 思想 一棵树中的纵向遍历结束回到上一层的过程&#xff0c;比如&#xff1a; 这个过程通常回伴随恢复现场的过程。 模板 void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本层集…

数据结构:链式队列

队列是限制在两端操作进行插入操作与删除操作的线性表&#xff0c;允许进行插入操作的一端称为"队尾"&#xff0c;允许进行删除操作的一端称为“队头”。当线性表中没有元素时&#xff0c;称为“空队”。队列的特点是先进先出。 队列两种规定&#xff1a; 1、front…

应用层—HTTP详解(抓包工具、报文格式、构造http等……)

文章目录 HTTP1. 抓包工具的使用1.1 配置信息1.2 观察数据 2. 分析 https 抓包结果3. HTTP请求详解3.1 认识 URL3.1.1 URL 基本格式3.1.2 查询字符串 (query string)3.1.3 关于 URL Encode 3.2 认识 http 方法3.2.1 [经典问题] Get 和 Post 主要的区别是什么&#xff1f;&#…

Pytest 结合 Allure 生成测试报告

测试报告在项目中是至关重要的角色&#xff0c;一个好的测试报告&#xff1a; 可以体现测试人员的工作量&#xff1b; 开发人员可以从测试报告中了解缺陷的情况&#xff1b; 测试经理可以从测试报告中看到测试人员的执行情况及测试用例的覆盖率&#xff1b; 项目负责人可以通过…

Qt拖拽事件简单实现

1.相关说明 重写resizeEvent(这个按需重写)、dragEnterEvent(拖拽事件函数)、dropEvent(放下事件函数)&#xff0c;可以将本地图片拖拽到label标签中 2.相关界面 3.相关代码 #include "widget.h" #include "ui_widget.h" #include <QDragEnterEvent>…

5G_系统同步机制(八)

BBU和RRU的同步机制 为什么要做到系统同步 在TDD模式下工作时&#xff0c;为了避免相邻小区之间的干扰&#xff0c;近距离的所有gNB在任何时间点都必须具有相同的传输方向(DL或UL)。这样做的必要条件是在BTS之间同步SFN (System Frame number)和time Slot。此外&#xff0c;由…

c++程序的内存模型,new操作符详解

目录 内存四区 程序运行前 代码区 全局区 程序运行后 栈区 堆区 new操作符 创建一个数 创建一个数组 内存四区 不同区域存放不同的数据&#xff0c;赋予不同的生命周期&#xff0c;让我们更加灵活的编程 程序运行前 程序运行前就有代码区和全局区 代码区 程序编…

STM32标准库开发——PWM驱动代码

PWM驱动初始化代码 使能定时器二时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);设置定时器时钟源 TIM_InternalClockConfig(TIM2);配置定时器二的时基单元 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; TIM_TimeBaseInitStruct.TIM_ClockDivisionTIM_CKD_D…

java面试——juc篇

一、线程基础 1、进程与线程的区别&#xff1f;&#xff08;⭐⭐⭐&#xff09; 进程&#xff1a;进程是程序的一次执行过程&#xff0c;是操作系统资源分配的基本单位。程序由指令和数据组成&#xff0c;指令要运行就得加载至CPU&#xff0c;数据要读写就得加载至内存&#…

【嘉立创EDA-PCB设计指南】4.模块化布局

前言&#xff1a;本文对本专栏中的【嘉立创EDA-PCB设计指南】前面绘制的原理图进行模块化布局&#xff0c;首先进行预布局&#xff08;将每个模块放一起&#xff09;&#xff0c;然后进行精细化布局&#xff08;按照原理图来精细化布局&#xff09;。 目录 模块化预布局 模块…

电梯调度问题文献阅读

电梯调度问题文献阅读 文章目录 电梯调度问题文献阅读[toc]文献阅读1. 陈纪龙,孟洪兵,吴刚等.六层电梯模拟系统的研究与实现[J].伊犁师范学院学报(自然科学版),2014,8(01):57-62.2. 陈福兰,杜虹.浅析电梯并联运行的几种调度方法[J].装备制造技术,2012,(10):178-180190.3. 马春江…

洛谷(CodeForces)历年愚人节题目,难度普及+/提高,让你怀疑自己智商

INTERCALC 题目描述 DO YOU EXPECT ME TO FIND THIS OUT? WHAT BASE AND/XOR LANGUAGE INCLUDES string? DON’T BYTE OF MORE THAN YOU CAN CHEW YOU CAN ONLY DISTORT THE LARGEST OF MATHEMATICS SO FAR SAYING “ABRACADABRA” WITHOUT A MAGIC AND WON’T DO YOU …