(二)原生js案例之数码时钟计时
创始人
2025-01-07 19:04:14
0

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

效果

请添加图片描述

代码实现

  • 必要的样式
   
  • 静态页面

  • :
  • :
  • js核心代码
    window.onload = function () {         const oBody = document.body         const 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 = true         fnTime()         function fnTime() {           const myTime = new Date()           const year = myTime.getFullYear()           const month = myTime.getMonth() + 1           const day = myTime.getDate()           const hour = myTime.getHours()           const minute = myTime.getMinutes()           const second = myTime.getSeconds()           //星期           let week = myTime.getDay()            switch (week) {             case 0:               week = '星期日'               break             case 1:               week = '星期一'               break             case 2:               week = '星期二'               break             case 3:               week = '星期三'               break             case 4:               week = '星期四'               break             case 5:               week = '星期五'               break             case 6:               week = '星期六'               break             default:               week = ''           }           const time = fnAddZero(hour) + fnAddZero(minute) + fnAddZero(second)           // oP.innerHTML = time           oTitle.innerHTML = year + '年' + month + '月' + day + '日' + week           //初始化加载一次,防止刷新的时候出现闪屏           if(isInit){             for (let i = 0; i < oImg.length; i++) {               oImg[i].src = `./img/${time.charAt(i)}.JPG`             }           }                      isInit = false           return time         }         //辅助方法,补0         function fnAddZero(num) {           if (num < 10) {             return '0' + num           }           return '' + num         }          let ht1=0;         let h1 = 0         setInterval(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 = 0         setInterval(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 = 0         setInterval(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 = 0         setInterval(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 = 0         setInterval(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);    } 

这样就实现了我们的数字时间的切换效果

相关内容

热门资讯

一分钟内幕!科乐吉林麻将系统发... 一分钟内幕!科乐吉林麻将系统发牌规律,福建大玩家确实真的是有挂,技巧教程(有挂ai代打);所有人都在...
一分钟揭秘!微扑克辅助软件(透... 一分钟揭秘!微扑克辅助软件(透视辅助)确实是有挂(2024已更新)(哔哩哔哩);1、用户打开应用后不...
五分钟发现!广东雀神麻雀怎么赢... 五分钟发现!广东雀神麻雀怎么赢,朋朋棋牌都是是真的有挂,高科技教程(有挂方法)1、广东雀神麻雀怎么赢...
每日必看!人皇大厅吗(透明挂)... 每日必看!人皇大厅吗(透明挂)好像存在有挂(2026已更新)(哔哩哔哩);人皇大厅吗辅助器中分为三种...
重大科普!新华棋牌有挂吗(透视... 重大科普!新华棋牌有挂吗(透视)一直是有挂(2021已更新)(哔哩哔哩)1、完成新华棋牌有挂吗的残局...
二分钟内幕!微信小程序途游辅助... 二分钟内幕!微信小程序途游辅助器,掌中乐游戏中心其实存在有挂,微扑克教程(有挂规律)二分钟内幕!微信...
科技揭秘!jj斗地主系统控牌吗... 科技揭秘!jj斗地主系统控牌吗(透视)本来真的是有挂(2025已更新)(哔哩哔哩)1、科技揭秘!jj...
1分钟普及!哈灵麻将攻略小,微... 1分钟普及!哈灵麻将攻略小,微信小程序十三张好像存在有挂,规律教程(有挂技巧)哈灵麻将攻略小是一种具...
9分钟教程!科乐麻将有挂吗,传... 9分钟教程!科乐麻将有挂吗,传送屋高防版辅助(总是存在有挂)1、完成传送屋高防版辅助透视辅助安装,帮...
每日必看教程!兴动游戏辅助器下... 每日必看教程!兴动游戏辅助器下载(辅助)真是真的有挂(2025已更新)(哔哩哔哩)1、打开软件启动之...