原生js实现大屏数字上下滚动效果,支持随机多位数字-程序员宅基地

技术标签: css  前端  javascript  

在大屏项目中经常需要实现那种数字上下滚动的效果,普通的数字随机滚动在UI组件(例如View Design中)里,或者是countUp插件(Vue3数字滚动插件vue-countup-v3)

html代码
html部分只定义一个简单的容器,几个数字是靠js实现的,有更大的灵活性。

 <div class="container"></div>

js代码
注:本段代码是以原生js实现,若项目需要,可以自行转为Jquery形式或者Vue中的v-for生成

var computeNumber = [];
// 根据实际情况确定几位数
var digitNum = 5;
setComputeNum(getRandomNumber());

// 生成0-99999随机数
function getRandomNumber () {
    return Math.floor(Math.random() * Math.pow(10,digitNum));
};

function setComputeNum(num) {
    num = num.toString()
    if (num.length < digitNum) { 
        // 如未满5位数,在前面补位"0"
        num = '0' + num;
        setComputeNum(num);
    } else if (num.length === digitNum) {
        computeNumber = num.split('');
    }
}
for(let i = 0; i<computeNumber.length; i++){
    // 创建span节点            
    var spanParent = document.createElement("span");            
    var spanSon = document.createElement("span");            
    // 创建文本节点            
    var node = document.createTextNode("0123456789");       
    spanSon.appendChild(node);  
    spanParent.append(spanSon);
    spanParent.className = "box-item";
    document.getElementsByClassName("container")[0].append(spanParent);
}

css

.container{
    margin: 40px auto;
    text-align: center;
}
.box-item {
    position: relative;
    display: inline-block;
    width: 54px;
    height: 82px;
    background: url("./../img/bg.png") no-repeat center center;
    background-size: 100% 100%;
    font-size: 62px;
    line-height: 82px;
    text-align: center;
    position: relative;
    writing-mode: vertical-lr;
    text-orientation: upright;
    overflow: hidden; /* 没有这个属性的话能看到全部数字上下滚动 */
}
.box-item span {
    position: absolute;
    top: 10px;
    left: 50%;
    transform: translate(-50%,0);
    transition: transform 1s ease;
    letter-spacing: 10px;
    color: orange;
}

 

加入动画和定时器

var timer = setInterval(()=>{
    setComputeNum(getRandomNumber());
    setTransform();
},3000)

// 设置每一位数字的偏移
function setTransform() {
    let boxItem = document.getElementsByClassName("box-item");
    let spans = [];
    for(let i = 0;i<boxItem.length;i++){
        spans.push(boxItem[i].getElementsByTagName("span")[0]);
    }
    for (let index = 0; index < spans.length; index++) {
        let elem = spans[index];
        elem.style.transform = `translate(-50%, -${computeNumber[index] * 10}%)`;
    }
};

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_53895518/article/details/137876014

智能推荐

2024上半年软考别轻易尝试!先了未发布_计算机软考2024-程序员宅基地

文章浏览阅读431次,点赞7次,收藏5次。软考共设有27个不同的资格类别,按照方向划分为五大方向,包括计算机软件、计算机网络、计算机应用技术、信息系统和信息服务,同时还有三个不同的等级,即初级、中级和高级。只要遵守中华人民共和国的宪法和法律,并具备一定的计算机技术应用能力,任何人都可以根据自己的情况报名参加相应专业类别和级别的考试。1、2023年下半年起,软考已经从传统的纸笔考试改革为机考形式,这意味着备考2024年的考生需要调整答题方式。5、软考备考需要有老师的指导和学友的陪伴,才能保持良好的心态并坚持下去,否则很容易半途而废。_计算机软考2024

str计算机中代表什么,STR到底是待机还是休眠-程序员宅基地

文章浏览阅读4.2k次,点赞2次,收藏16次。1。为什么需要待机、休眠尽管电脑硬件运行速度越来越快,但操作系统的体积也在不断膨胀,使得电脑开、关机时,启动、关闭的程序越来越多,花费时间也越来越漫长。因此如何让电脑能够快速启动、一开机就进入Windows,就成为用户关心的问题。于是,随着硬件和软件的升级,操作系统开始引入了高级电源管理,其作用就是在电脑闲置时关闭部分设备,将电脑进入等待休息状态,这样当需要重新使用电脑时,能够直接从等待休息状态尽..._str待机

Win7安装程序遇到错误代码0xc8000222的解决方法(亲测有效)-程序员宅基地

文章浏览阅读3.5k次,点赞2次,收藏7次。升级安装win7系统后,经常需要安装程序软件,安装程序过程中难免遇到一些错误问题,比如最近有些用户在Win7旗舰版系统中遇到一个问题,安装程序失败遇到错误代码0xc8000222,也不知道怎么处理。今天小编就来和大家介绍在Win7系统中安装程序时遇到错误0xc8000222的处理方法,有需要的用户一起来看下具体操作吧。Win7安装程序遇到错误代码0xc8000222的解决方法 解决方法: 1、点击“开始”->”所有程序”->”命令提示符”右键以管理员身份运行,然后输入:net stop W_0xc8000222

centos7已有数据硬盘挂载_CentOS7挂载新数据盘的完整步骤-程序员宅基地

文章浏览阅读1.2k次。CentOS7挂载新数据盘的完整步骤前言刚刚买了一台新的VPS,新买的VPS的数据盘默认没有挂载到系统上,需要我们自己来挂载的。我们给服务器添加新的硬盘的时候都需要进行挂载操作,本文简要记录挂载操作过程。查看硬盘信息首先我们使用命令df -TH查看当前系统挂载的情况:我们看到并没有挂载新的数据盘,数据盘是200多G的。然后通过命令fdisk-l查看硬盘信息。可以看到有两块硬盘/dev/xvda和/..._已经装过centos7系统的硬盘如何挂载在新系统上

node 第十七天 使用rsa非对称加密 实现前后端加密通信 JSEncrypt和node-rsa_node rsa-程序员宅基地

文章浏览阅读749次。使用rsa非对称加密 实现前后端加密通信 JSEncrypt和node-rsa_node rsa

中国期货市场风险回顾之八(海南中商所F703咖啡事件)_海南咖啡事件认识和感悟-程序员宅基地

文章浏览阅读2.1k次。   期现脱节下的悲剧——再看海南中商所F703咖啡事件 1995年12月21日,海南中商所宣布自F605合约始咖啡期货合约放大交割限量(交割总量由象征性的1吨扩大为1万吨),交割限量以外的头寸全部按进入交割月至最后交易日全部成交的加权平均价实行强制平仓。自F605始,中商所的咖啡品种演出了既不同于纽约咖啡行情又有别于历次中国期货交易风波的多幕闹剧。   回首咖啡F703事件  _海南咖啡事件认识和感悟

随便推点

微信小程序通过web-view跳转到小程序页面_webview跳转微信小程序页面-程序员宅基地

文章浏览阅读1.4w次,点赞5次,收藏24次。一、背景 博主这边的小程序大部分都使用了web-view,众所周知,使用web-view最大的问题就是和小程序之间进行交互的问题。我这边主要是从web-view跳转回小程序的demo。二、通过web-view跳转到小程序页面1、微信官方文档微信web-view文档2、关于web-view页面的用法:Page({ data: { url: '你的we_webview跳转微信小程序页面

Eclipse配置Android开发环境_eclipse配置安卓开发环境-程序员宅基地

文章浏览阅读4.5k次,点赞5次,收藏31次。Eclipse配置Android开发环境在eclipse中配置Android开发环境在eclipse中配置Android开发环境在配置好环境的eclipse中安装Android SDK(Software Development Kit)和ADT插件。SDK的安装过程主要参考这篇博客。_eclipse配置安卓开发环境

R730服务器做了raid的硬盘,插在R720上面可以用吗?-程序员宅基地

文章浏览阅读541次,点赞6次,收藏9次。戴尔R720戴尔R730。

计算机取证之Xplico ——合天网安实验室学习笔记-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏19次。实验链接Xplico是一款开源的网络取证分析工具,其分析与呈现的能力非常强大。Xplico可以捕获Internet网络应用层流量,通过流量解析,解析出网络包中的各种应用数据,还原网络数据发送现场。通过本实验学习掌握Xplico使用方法,学会利用Xplico对网络流量进行分析取证。链接:http://www.hetianlab.com/expc.do?ce=10748f62-5706-403d-..._xplico

Docker 入门 | 2 镜像的存储驱动与 Dockerfile 实战_doceker 镜像中增加驱动-程序员宅基地

文章浏览阅读119次。Dockerfile 实战,搭建在 centos 上的 httpd。_doceker 镜像中增加驱动

大学生网页设计制作作业实例代码 (全网最全,建议收藏) HTML+CSS+JS_免费网页代码大全-程序员宅基地

文章浏览阅读2.7w次,点赞18次,收藏182次。临近期末,大一新生的各种考试和专业结课作业纷至沓来。web实训大作业、网页期末作业、web课程与设计、网页设计等,简直让人头大。你还在为网页设计老师的作业要求感到头大?网页作业无从下手?网页要求的总数量太多?没有合适的模板?等等一系列问题。你想要解决的问题,在这篇博文中基本都能满足你的需求, 废话不多说,直接看效果。网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程序方面:计划采用最新的网页编程语言HTML5+CSS3+JS程序语言完成网站的功能设计。并确_免费网页代码大全