您好,登錄后才能下訂單哦!
這篇文章主要講解了“js怎么實現帶翻轉動畫圖片時鐘”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“js怎么實現帶翻轉動畫圖片時鐘”吧!
首先上圖,先看效果
1、需求
根據當前系統時間來更改這個時鐘,更改時間時,數字向上翻動,轉成下一個數字。
2、編程思路
如果只是根據系統時間來更改圖片的話,其實很簡單,就是獲得每個數字圖片的DOM,獲得當前系統時間,然后更改其src為指定數字圖片就可以了。但是這邊想要加入這個反轉動畫,我們可以指定一個窗口,高度為一個數字圖片的大小,再檢測到時間變化時,我們在指定的數字圖片后加入我們想要改變的數字圖片結點,之后設置一個定時器用很小的時間不斷向上移動,這樣就能出這個上翻的動畫效果,等上升了一個數字圖片高度之后,刪除上面的第一個結點。由此往復,即可實現。
3、代碼實現
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <style> *{ padding: 0; margin: 0; } .number{ height: 70px; overflow: hidden; float: left; } .number img{ display: block; } </style> <body> <div> <div id="shi1" class="number"> <img src="img/0.jpg" /> </div> <div id="shi2" class="number"> <img src="img/0.jpg" /> </div> <div class="number"> <img src="img/c.jpg" /> </div> <div id="fen1" class="number"> <img src="img/0.jpg" /> </div> <div id="fen2" class="number"> <img src="img/0.jpg" /> </div> <div class="number"> <img src="img/c.jpg" /> </div> <div id="miao1" class="number"> <img src="img/0.jpg" /> </div> <div id="miao2" class="number"> <img src="img/0.jpg" /> </div> </div> <script> var shi1D = document.getElementById('shi1'); var shi2D = document.getElementById('shi2'); var fen1D = document.getElementById('fen1'); var fen2D = document.getElementById('fen2'); var miao1D = document.getElementById('miao1'); var miao2D = document.getElementById('miao2'); function getTime() { var myDate = new Date(); var mytime=myDate.toLocaleString('chinese', { hour12: false }); //獲得時間格式為2020/12/30 18:54:39 第一個split(' ')[1]獲得18:54:39這個字符串,在對其.split('')獲得[1,8,:,5,4,:,3,9]這個數組 //由此得到,time[0]time[1]為小時,time[3]time[4]為分鐘,time[6]time[7]為秒 time = mytime.split(' ')[1].split(''); // console.log(time); return new Array(time[0],time[1],time[3],time[4],time[6],time[7]); } var h2=0,h3=0,f1=0,f2=0,m1=0,m2=0; //更新小時1 var ht1=0; setInterval(function () { var a = getTime(); if (a[0]!=h2){ h2=a[0]; //獲得當前的子結點 var childImg = shi1D.getElementsByTagName('img')[0]; var imgM = document.createElement('img'); imgM.src='img/'+h2+'.jpg'; shi1D.appendChild(imgM); var s1 = setInterval(function () { ht1+=1; shi1D.scrollTop=ht1; if (ht1>=70){ clearInterval(s1); setTimeout(function () { childImg.remove(); ht1=0; },100) } },1) } },1000); //更新小時2 var ht2=0; setInterval(function () { var a = getTime(); if(a[1]!=h3){ h3=a[1]; //獲得當前的子結點 var childImg = shi2D.getElementsByTagName('img')[0]; var imgM = document.createElement('img'); imgM.src='img/'+h3+'.jpg'; shi2D.appendChild(imgM); var m2 = setInterval(function () { ht2+=1; shi2D.scrollTop=mt1; if (ht2>=70){ clearInterval(m2); setTimeout(function () { childImg.remove(); ht2=0; },100) } },1) } },1000); //更新分鐘1 var ft1=0; setInterval(function () { var a = getTime(); if (a[2]!=f1){ f1=a[2]; //獲得當前的子結點 var childImg = fen1D.getElementsByTagName('img')[0]; var imgM = document.createElement('img'); imgM.src='img/'+f1+'.jpg'; fen1D.appendChild(imgM); var m2 = setInterval(function () { ft1+=1; miao1D.scrollTop=ft1; if (ft1>=70){ clearInterval(m2); setTimeout(function () { childImg.remove(); ft1=0; },100) } },1) } },1000); //更新分鐘2 var ft2=0; setInterval(function () { var a = getTime(); if (a[3]!=f2){ f2=a[3]; //獲得當前的子結點 var childImg = fen2D.getElementsByTagName('img')[0]; var imgM = document.createElement('img'); imgM.src='img/'+f2+'.jpg'; fen2D.appendChild(imgM); var m2 = setInterval(function () { ft2+=1; fen2D.scrollTop=ft2; if (ft2>=70){ clearInterval(m2); setTimeout(function () { childImg.remove(); ft2=0; },100) } },1) } },1000); //更新秒1 var mt1=0; setInterval(function () { var a = getTime(); if (a[4]!=m1){ m1=a[4]; //獲得當前的子結點 var childImg = miao1D.getElementsByTagName('img')[0]; var imgM = document.createElement('img'); imgM.src='img/'+m1+'.jpg'; miao1D.appendChild(imgM); var m2 = setInterval(function () { mt1+=1; miao1D.scrollTop=mt1; if (mt1>=70){ clearInterval(m2); setTimeout(function () { childImg.remove(); mt1=0; },100) } },1) } },1000); //更新秒2 var mt2=0; setInterval(function () { var a = getTime(); //獲得當前的子結點 var childImg = miao2D.getElementsByTagName('img')[0]; // miao2D.src='img/'+a[5]+'.jpg' var imgM = document.createElement('img'); imgM.src='img/'+a[5]+'.jpg'; miao2D.appendChild(imgM); var m2 = setInterval(function () { mt2+=1; // console.log(mt2); miao2D.scrollTop=mt2; if (mt2>=70){ clearInterval(m2); setTimeout(function () { childImg.remove(); mt2=0; },100) } },1) },1000); </script> </body> </html>
感謝各位的閱讀,以上就是“js怎么實現帶翻轉動畫圖片時鐘”的內容了,經過本文的學習后,相信大家對js怎么實現帶翻轉動畫圖片時鐘這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。