(二)原生js案例之数码时钟计时
原生js实现的数字时间上下切换显示时间的效果,有参考相关设计,思路比较难,代码其实很简单
效果

代码实现
- 必要的样式
<style>* {padding: 0;margin: 0;}.content{/* text-align: center; */display: flex;align-items: center;justify-content: center;flex-direction: column;height: 100vh;background: linear-gradient(202deg,#F3E7E9 0%,#FFFFFF 53%,#E3EEFF 100%); }#title{margin:20px;font-size: 40px;}ul {list-style: none;overflow: hidden;}li {float: left;}li.time-box {width: 122px;height: 172px;overflow: hidden;position: relative;}li.colon{animation: dotLignt 1s linear infinite alternate;font-size: 80px;height: 172px;line-height: 172px;font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;}/* 闪烁东湖*/@keyframes dotLignt {0% {opacity: 1;}50% {opacity: 50%;}100% {opacity: 0;}}</style>
- 静态页面
<div class="content"><h2 id="title"></h2><p id="time"></p><ul><li id="h1" class="time-box"><img class="time" src="./img/0.JPG" alt="" srcset="" /></li><li id="h2" class="time-box"><img class="time" src="./img/1.JPG" alt="" srcset="" /></li><li class="colon"><span>:</span></li><li id="fen1" class="time-box"><img class="time" src="./img/2.JPG" alt="" srcset="" /></li><li id="fen2" class="time-box"><img class="time" src="./img/3.JPG" alt="" srcset="" /></li><li class="colon"><span>:</span></li><li id="miao1" class="time-box"><img class="time" src="./img/4.JPG" alt="" srcset="" /></li><li id="miao2" class="time-box up"><img class="time" src="./img/5.JPG" alt="" srcset="" /></li></ul></div>
- js核心代码
window.onload = function () {const oBody = document.bodyconst oP = oBody.querySelector('#time')const oTitle = document.querySelector('#title')const oImg = document.querySelectorAll('img.time')const oH1 = document.querySelector('#h1')const oH2 = document.querySelector('#h2')const oFen1 = document.querySelector('#fen1')const oFen2 = document.querySelector('#fen2')const oMiao1 = document.querySelector('#miao1')const oMiao2 = document.querySelector('#miao2')let isInit = truefnTime()function fnTime() {const myTime = new Date()const year = myTime.getFullYear()const month = myTime.getMonth() + 1const day = myTime.getDate()const hour = myTime.getHours()const minute = myTime.getMinutes()const second = myTime.getSeconds()//星期let week = myTime.getDay()switch (week) {case 0:week = '星期日'breakcase 1:week = '星期一'breakcase 2:week = '星期二'breakcase 3:week = '星期三'breakcase 4:week = '星期四'breakcase 5:week = '星期五'breakcase 6:week = '星期六'breakdefault:week = ''}const time = fnAddZero(hour) + fnAddZero(minute) + fnAddZero(second)// oP.innerHTML = timeoTitle.innerHTML = year + '年' + month + '月' + day + '日' + week//初始化加载一次,防止刷新的时候出现闪屏if(isInit){for (let i = 0; i < oImg.length; i++) {oImg[i].src = `./img/${time.charAt(i)}.JPG`}}isInit = falsereturn time}//辅助方法,补0function fnAddZero(num) {if (num < 10) {return '0' + num}return '' + num}let ht1=0;let h1 = 0setInterval(function () {let a = fnTime();//获得当前的子结点if(a[0] != h1){h1 = a[0];let childImg = oH1.getElementsByTagName('img')[0];let imgM = document.createElement('img');imgM.src='img/'+a[0]+'.jpg';oH1.appendChild(imgM);let m2 = setInterval(function () {ht1+=1;oH1.scrollTop=ht1;if (ht1>=70){clearInterval(m2);setTimeout(function () {childImg.remove();ht1=0;},100)}},1)}},1000);let ht2=0;let h2 = 0setInterval(function () {let a = fnTime();//获得当前的子结点if(a[1] != h2){h2 = a[1];let childImg = oH2.getElementsByTagName('img')[0];let imgM = document.createElement('img');imgM.src='img/'+a[1]+'.jpg';oH2.appendChild(imgM);let m2 = setInterval(function () {ht2+=1;oH2.scrollTop=ht2;if (ht2>=70){clearInterval(m2);setTimeout(function () {childImg.remove();ht2=0;},100)}},1)}},1000);let ft1=0;let f1 = 0setInterval(function () {let a = fnTime();//获得当前的子结点if(a[2] != f1){f1 = a[2];let childImg = oFen1.getElementsByTagName('img')[0];let imgM = document.createElement('img');imgM.src='img/'+a[2]+'.jpg';oFen1.appendChild(imgM);let m2 = setInterval(function () {ft1+=1;// console.log(mt2);oFen1.scrollTop=ft1;if (ft1>=70){clearInterval(m2);setTimeout(function () {childImg.remove();ft1=0;},100)}},1)}},1000);let ft2=0;let f2 = 0setInterval(function () {let a = fnTime();//获得当前的子结点if(a[3] != f2){f2 = a[3];let childImg = oFen2.getElementsByTagName('img')[0];let imgM = document.createElement('img');imgM.src='img/'+a[3]+'.jpg';oFen2.appendChild(imgM);let m2 = setInterval(function () {ft2+=1;oFen2.scrollTop=ft2;if (ft2>=70){clearInterval(m2);setTimeout(function () {childImg.remove();ft2=0;},100)}},1)}},1000);let mt1=0;let m1 = 0setInterval(function () {let a = fnTime();console.log("🚀 ~ a:", a)//获得当前的子结点if(a[4] != m1){console.log("🚀 ~ m1:", m1)console.log("🚀 ~ a[4]:", a[4])m1 = a[4];let childImg = oMiao1.getElementsByTagName('img')[0];let imgM = document.createElement('img');imgM.src='img/'+a[4]+'.jpg';oMiao1.appendChild(imgM);let m2 = setInterval(function () {mt1+=1;// console.log(mt2);oMiao1.scrollTop=mt1;if (mt1>=70){clearInterval(m2);setTimeout(function () {childImg.remove();mt1=0;},100)}},1)}},1000);let mt2=0;setInterval(function () {let a = fnTime();//获得当前的子结点let childImg = oMiao2.getElementsByTagName('img')[0];let imgM = document.createElement('img');imgM.src='img/'+a[5]+'.jpg';oMiao2.appendChild(imgM);let m2 = setInterval(function () {mt2+=1;// console.log(mt2);oMiao2.scrollTop=mt2;if (mt2>=70){clearInterval(m2);setTimeout(function () {childImg.remove();mt2=0;},100)}},1)},1000);}
这样就实现了我们的数字时间的切换效果
相关文章:
(二)原生js案例之数码时钟计时
原生js实现的数字时间上下切换显示时间的效果,有参考相关设计,思路比较难,代码其实很简单 效果 代码实现 必要的样式 <style>* {padding: 0;margin: 0;}.content{/* text-align: center; */display: flex;align-items: center;justif…...
[CSS] 浮动布局的深入理解与应用
文章目录 浮动的简介元素浮动后的特点解决浮动产生的影响浮动后的影响解决浮动产生的影响 浮动相关属性实际应用示例示例1:图片与文字环绕示例2:多列布局示例3:响应式布局 总结 浮动布局是CSS中一种非常强大的布局方式,最初设计用…...
Linux云计算 |【第一阶段】ENGINEER-DAY2
主要内容: 磁盘空间管理fdisk、parted工具、开机自动挂载、文件系统、交换空间 KVM虚拟化 实操前骤: 1)添加一块硬盘(磁盘),需要关机才能进行操作,点击左下角【添加硬件】 2)选择2…...
9.11和9.9哪个大?
没问题 文心一言 通义千问...
学懂C语言(十二):C语言中的二进制原理及应用
目录 1. 二进制原理 1.1 什么是二进制? 1.2 如何在C语言中表示二进制? 2. 二进制的表示 2.1 二进制和其他进制的转换 2.2 C语言中的二进制表示 3. 二进制运算 3.1 位运算符 3.2 计算过程示例 4. 应用示例 4.1 使用位运算实现开关 5. 总结 C语…...
科研绘图系列:R语言雨云图(Raincloud plot)
介绍 雨云图(Raincloud plot)是一种数据可视化工具,它结合了多种数据展示方式,旨在提供对数据集的全面了解。雨云图通常包括以下几个部分: 密度图(Density plot):表示数据的分布情况,密度图的曲线可以展示数据在不同数值区间的密度。箱线图(Box plot):显示数据的中…...
优化教学流程和架构:构建高效学习环境的关键步骤
在教育领域,设计和优化教学流程和架构是提高学习效果和学生参与度的关键。本文将探讨如何通过合理的教学流程和有效的架构来构建一个高效的学习环境。 ### 1. 理解教学流程和架构的重要性 教学流程指的是教学活动的组织和顺序,而教学架构则是指支持教学…...
js | this 指向问题
https://juejin.cn/post/6844904083707396109 任何函数运行的时候,都会创建一个context对象,context对象有一个this对象,在运行的时候决定。任何函数都对应一个reference类结构体(具体叫啥有点忘了),简单就…...
《昇思 25 天学习打卡营第 15 天 | 基于MindNLP+MusicGen生成自己的个性化音乐 》
《昇思 25 天学习打卡营第 15 天 | 基于MindNLPMusicGen生成自己的个性化音乐 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 MusicGen概述 MusicGen是由Meta AI的Jade Copet等人提出的一种基于单个语言模型&…...
Gitee 使用教程1-SSH 公钥设置
一、生成 SSH 公钥 1、打开终端(Windows PowerShell 或 Git Bash),通过命令 ssh-keygen 生成 SSH Key: ssh-keygen -t ed25519 -C "Gitee SSH Key" 随后摁三次回车键(Enter) 2、查看生成的 SSH…...
理解Cookie、Session和Token
在现代Web开发中,用户身份认证和会话管理是至关重要的部分。理解Cookie、Session和Token的区别和应用场景,有助于我们设计出更加安全和高效的Web应用。本文将详细探讨这三者的工作原理、优缺点以及使用场景。 1. Cookie 1.1 什么是Cookie? …...
概率论原理精解【1】
文章目录 测度概述集类笛卡尔积定义例子 多集合的笛卡尔积定义计算方法注意事项 有限笛卡尔积的性质1. 定义2. 性质2.1 基数性质2.2 空集性质2.3 不满足交换律2.4 不满足结合律2.5 对并和交运算满足分配律 3. 示例4. 结论 参考链接 测度 概述 所谓测度,通俗的讲就…...
数据结构(二叉树-1)
文章目录 一、树 1.1 树的概念与结构 1.2 树的相关术语 1.3 树的表示 二、二叉树 2.1 二叉树的概念与结构 2.2特殊的二叉树 满二叉树 完全二叉树 2.3 二叉树的存储结构 三、实现顺序结构二叉树 3.1 堆的概念与结构 3.2 堆的实现 Heap.h Heap.c 默认初始化堆 堆的销毁 堆的插入 …...
巴黎奥运会倒计时 一个非常不错的倒计时提醒
巴黎奥运会还有几天就要开幕了,大家应该到处都可以看到巴黎奥运会的倒计时,不管是电视上,还是网络里,一搜索奥运会,就会看到。倒计时其实是一个我们在生活中很常用的一个方法,用来做事情的提醒,…...
【Python】使用库 -- 详解
库就是别人已经写好了的代码,可以让我们直接拿来用。 一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备。所谓的 “生态” 指的就是语言是否有足够丰富的库,来应对各种各样的场景。在…...
Web3D:WebGL为什么在渲染性能上输给了WebGPU。
WebGL已经成为了web3D的标配,市面上有N多基于webGL的3D引擎,WebGPU作为挑战者,在渲染性能上确实改过webGL一头,由于起步较晚,想通过这个优势加持,赶上并超越webGL仍需时日。 贝格前端工场为大家分享一下这…...
SpringBoot面试高频总结01
1. 什么是SpringBoot? SpringBoot是一个基于Spring框架的快速开发框架,它采用约定大于配置,自动装配的方式,可以快速地创建独立的,生产级别的,基于Spring的应用程序。 相比于传统的Spring框架,S…...
Linux 工作队列(Workqueue):概念与实现
目录 一、工作队列的概念1.1 什么是工作队列1.2 为什么使用工作队列 二、工作队列的实现2.1 定义和初始化工作队列2.2 工作队列API 三、工作队列的应用3.1 延迟执行任务3.2 处理复杂的中断任务 四、工作队列的类型4.1 普通工作队列4.2 高优先级工作队列 五、总结 在Linux内核中…...
前端页面是如何禁止被查看源码、被下载,被爬取,以及破解方法
文章目录 1.了解禁止查看,爬取原理1.1.JS代码,屏蔽屏蔽键盘和鼠标右键1.2.查看源码时,通过JS控制浏览器窗口变化2.百度文库是如何防止抓包2.1.HTPPS2.2. 动态加载为什么看不到?如何查看动态加载的内容?3.禁止复制,如果解决3.1.禁止复制原理3.2.如何破解1.了解禁止查看,爬…...
51单片机嵌入式开发:14、STC89C52RC 之HX1838红外解码NEC+数码管+串口打印+LED显示
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STC89C52RC 之HX1838红外解码NEC数码管串口打印LED显示 STC89C52RC 之HX1838红外解码NEC数码管串口打印LED显示1 概述2 硬件电路2.1 遥控器2.2 红外接收器电路2.3 STC89C52单…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
