前端設計-JavaScript簡單數字時鐘開發實例

2020-12-27 編程技術棧
簡單數字時鐘開發實例

藉助於JavaScript window對象所提供的計時觸發函數setInterval可以實現前端動畫效果的設計與製作。本例主要以setInterval方法為基礎介紹簡單數字時鐘的開發實例。

01所需素材

本數字時鐘設計實現格式為00:00:00類型結構的數字時鐘,因此需要準備時鐘顯示相關數字及間隔符號的素材。最終實現效果如下所示:

最終設計效果

設計實現效果如上圖,因此需要準備0-9數字與":"字符,素材設計較為簡單直接採用PhotoShop進行設計最終導出保存為png格式圖片,素材圖片展示如下:

素材圖片

02設計思路

動態數字時鐘整體設計按照顯示格式要求,使用div展示每一位數字或者間隔符。在計時周期內調用處理函數獲取系統當前的時間,並根據當前時間計算出每一個div中應當展示的內容,最終實現時鐘的動態效果。主要設計階段如下:

1、整體HTML頁面布局設置

這個階段主要完成時鐘構成的8個DIV的布局設計,為下一步顯示時鐘提供基礎。本例DIV整體布局設計樣式效果如下:

時鐘布局層

時鐘基本布局層描述如上圖,為展示我們將其背景設置了不同顏色,後期在8個DIV塊中我們用於顯示時鐘相關數字及字符。

2、ID選擇器DIV背景設置

本例中數字時鐘數字與字符通過設置為DIV層的背景用於實現展示。本例使用ID選擇器用於實現0-9數字與間隔符的展示。由於我們數字時鐘相關素材都在統一圖片中,因此我們在設置展示數字與字符的過程中需要對每一個樣式中的背景截取位置通過background-position屬性進行精確控制。完成9個數字與一個分隔符樣式定義之後,可以將8個時鐘顯示DIV設置對應的ID標籤,實現內容展示,如我們將以上時鐘布局DIV標籤全部設置為展示數字0的ID標籤,效果如下:

ID標籤控制顯示內容

ID標籤控制DIV顯示內容如上圖所示,這樣我們就可以分別設置8個DIV層的ID標籤值實現內容的改變,如我們使用8對應的ID設置,則全部顯示數字8,效果如下:

ID標籤值對應數字8顯示效果

在實際實現中由於8個DIV結構是固定的,包含了兩個分割符號,這部分可以直接設置為分割符號,如下所示:

帶有分割符號的8位顯示效果

3、時間獲取與處理

該數字時鐘時間通過JavaScript提供的Date對象的實例化,獲取本地的時間。然後從時間數據中分別讀取出小時、分鐘、秒。所使用函數主要包括以下函數:

getHours();//用於獲取時間對象中的小時數,取值範圍0-23;

getMinutes();//用於獲取時間對象中的分鐘數,取值範圍0-59;

getSeconds();//用於獲取時間對象中的秒數,取值範圍0-59;

在獲取系統時間對應的小時、分鐘、秒之後需要確定各部分其中的每一位,由於我們時鐘格式是固定的,每一部分均為兩位,因此需要對10以內的數字進行判斷,如小於10則需要單獨補充最高位的0,如果大於等於10,則需要取出其中的十位與個位。個位取值較為簡單用獲取的值除以10取餘數即為個位,十位數字將獲取值除以10之後向下取值則可獲取10位數字。如數字35,十位計算可得3,個位餘數為5。

4、設置DIV層對應的ID標籤

在分別獲取小時、分鐘、秒對應的每一位之後,可以進一步將其設置顯示在對應DIV層中,即設置層的背景。要解決這個問題需要能夠精確獲取每一個DIV層。藉助Document對象我們可以獲取所有的層,本例我們將8個展示時鐘層,外部嵌套一個層。使用getElementById方法獲取該元素,通過該元素的childNodes屬性以數組形式獲取內部所有的DIV層。這樣可以通過數組對應下標分別表示每一個時鐘DIV。注意問題獲取的全部子節點除顯示時鐘的元素節點之外還有文本節點,需要確定哪些是對應的DIV元素節點。使用console.log輸出該數組就可以確定,數組輸出如下:

子節點列表

在該列表中我們可知對應案例編寫代碼,1,3為小時對應的2個DIV;7,9為分鐘對應的2個DIV;13,15為秒數對應的DIV。數組下標確定後就可以獲取對應的Div元素使用setAttribute()方法,實現ID屬性的設置。

5、計時器設計

為保證能夠動態獲取本地時間,並將其處理顯示的對應DIV層中,需要使用window對象提供的setInterval(func,time)方法,定義觸發周期及處理函數。考慮到間隔符號閃爍,我們設置觸發之後為500毫秒。在觸發函數中實現系統時間獲取及與時鐘DIV關聯動態改變各DIV的ID屬性。

03實現核心代碼及效果展示

按照以上設計思路,我們可以完成該案例開發,案例圖片處理使用PhotoShop CC2019,代碼編輯使用SublimeText。實現過程主要包括頁面布局設計實現與JavaScript腳本編寫的實現。其中頁面布局設計使用DIV嵌套實現,代碼如下:

頁面DIV布局

頁面DIV布局代碼如上圖所示,其中我們可以看到在初始狀態下除間隔符dd標籤之外,其他的數組部分都為d0,即我們設置的數字0展示。我們為調用背景素材實現背景展示,分別定義了d0~d9用於展示數字,dd標籤用於顯示間隔符,ds標籤用於隱藏間隔符。該部分樣式代碼如下:

時鐘數字與間隔符樣式設置

JavaScript腳本部分主要用於獲取系統時間,動態實現前端8個展示時鐘的DIV層ID標籤的設置。在窗體的onload時間中我們獲取所有的時鐘DIV元素,並啟動計時器。實現代碼如下:

頁面加載事件

頁面加載事件如上圖所示,其中回調函數setVal用於實現接收本地事件進行DIV層ID標籤設置。該函數實現代碼如下:

回調函數

處理函數代碼如上圖所示,自定義函數主要用於實現設置小時、分鐘與秒對應的DIV層ID屬性值,實現數字與間隔符切換。其中小時處理函數setH()代碼描述如下:

小時處理函數代碼

其他代碼處理與此類似,只是在處理完數字之後設置的nodes元素不同,這裡的nodes對象存儲了外層ID為test的DIV所有子元素。由於篇幅限制,其他函數不再一一說明。如需完整代碼請關注後私信。本例最終實現效果展示如下圖:

動態展示效果

本百家號長期關注編程資訊分享;編程課程、素材、代碼分享及編程培訓。如果您對以上方面有興趣或代碼錯誤、建議與意見,可在評論區回復。更多程序設計相關教程及實例分享,期待大家關注與閱讀!相關文章連結如下:

前端設計-JavaScript中父窗口與子窗口間的通信

前端設計-JavaScript實現Node節點的遍歷

快速學會如何使用CSS關係組合選擇器

一文快速讀懂CSS選擇器之屬性選擇器

相關焦點

  • 為什麼2017年Web前端開發工程師薪資越來越高?
    原因二:對前端,普遍存在巨大的誤解,其實前端一點也不簡單大多人都認為前端開發是一個「相對於其他模塊來說更簡單的領域」,在他們心中的前端工程師是這樣工作的:;那麼要想成為受追捧、拿高薪的80分優秀前端,要對業務需求和、架構設計有真正的運用;而100分的頂級前端,則必須要能夠兼顧技術和設計,更接近「以前端開發為主的全棧工程師」了。
  • 抖音上妖嬈人體時鐘軟體是什麼 怎麼弄計時方法教程
    那麼這款人體時鐘軟體叫什麼呢,不知道的夥伴們可以和小編一起來看看哦。  抖音上妖嬈的人體時鐘是什麼軟體介紹  是一款前端插件——人體時鐘(honehoneclock)。  抖音人體時鐘怎麼弄方法  要會一些簡單的javascript網頁前端操作哦!小編附上連結有興趣的朋友可以去試試。
  • 數字時鐘設計電路圖匯總(七款數字時鐘電路圖)
    按下s1,由時鐘狀態進入秒表狀態,再按一下,秒表開始計時,再按s1,秒錶停下,再按s1,進入調整時鐘的狀態,每按一次,可以用按鍵s2對相應的位進行調整。其中復位電路具有上電自動復位,和手動復位功能。由P2控制三極體驅動數碼管,P0口做數據輸出口。數字時鐘設計電路圖(二)
  • 從後端開發轉職前端開發,我學到了什麼?
    開發人員需要關注用戶界面,關心用戶如何與app互動,然後量化評估用戶體驗。有時你需要自己設計用戶體驗,然後改進應用程式流程。我喜歡前端開發的一點是可以直接解決用戶需求、關注他們的體驗。前端的方法跟後端不同,因為前端以用戶為中心,一切都圍繞著如何讓用戶更舒適地使用你開發的app,而不是處理數據結構。
  • iWatch數字時鐘動畫,3步搞定
    >【 一 】|時鐘動畫時鐘,關於時鐘的動畫飛哥在往期的文章中有過分享。本期我們再分享一個【數字時鐘】的玩法。也很簡單。主要結合OneKey7插件以及數字時間字體進行設計。(本來想設計個定時炸彈的,怕嚇壞小朋友。
  • 【推薦】阿里前端開源技術 | 值得收藏
    前端 設計語言 & 前端框架 Ant Design Ant
  • 「設計作品」最佳倒數計時器設計分析(附原型實例)
    視覺效果和動畫效果已經成為產品設計中不可或缺的一部分,開發人員使用動畫效果可以創建引人入勝的內容,營銷人員可以使用這些效果來獲得更好的產品覆蓋率和良好的轉化率。倒數計時器就是這樣一種元素,當用戶登陸頁面時,它會給用戶產生一種緊迫感。
  • 前端工程師主要做什麼?你了解Web前端開發工程師嗎-開課吧
    前端開發顧名思義就是頁面的設計,代碼的實現。零基礎學Web前端前端主要是負責頁面的設計,比如我們看到的手機界面、網頁等,能看到的都離不開前端的努力,學習起來是比較簡單的,因為界面的編程可以直接看到編程的結果,有什麼問題可以及時看到並修改
  • 騰訊Web前端大會精彩回顧
    分會場一1.1 騰訊-萬波-WebGL 新篇章首先由來自騰訊的高級前端工程師BruceWan(萬波)分享《WebGL新的篇章》,萬老師通過通俗易懂的語言向大家講解了如何去更好的學習WebGL,分析了WebGL的可行性,介紹了WebGL & ThreeJs
  • 在前端業務場景下的設計模式
    前端的代碼也是需要設計的,話雖如此,但即便看了很多設計模式的書籍,也無法真正應用起來。後來發現還是需要真實業務場景入手,思考在面對複雜多變的需求時如何編寫更簡潔、更容易維護的代碼。本文從這個角度入手,整理了在前端業務開發中遇見的一些設計模式。
  • 前端javaScript開發:array數組的for、map和foreach的區別
    老規矩,先看定義:Array.prototype.map()官方解釋:數組映射 不會修改原來的數組Array.prototype.forEach()官方解釋:數組遍歷 參數是函數 三個參數 1 是對應的元素 2 是下標 3 是遍歷的數組本身 不會修改原來的數組for方法:平時我們前端開發工作中經常會操作數組
  • 從破解某設計網站談前端水印(詳細教程)
    畢竟以上用 PS 做著還是有一些廢時間,由於組成的元素都很簡單,做一個自動化生成的完全可以。但是研究著研究著,就看到了某在線設計網站的水印,像這種技術支持的網站,最重要的防禦措施就是水印了,水印能夠很好的保護智慧財產權。
  • 第41節 Document文檔節點-Javascript
    本內容是《Web前端開發之Javascript視頻》的課件,請配合大師哥《Javascript》視頻課程學習。-- link.html頁面 --><h1>零點程式設計師</h1><h2><a name="one">Web前端開發</a></h2><div style="height: 1000px;background-color: purple;">DIV</div><h2><a name=
  • JavaScript API 設計原則
    好的 API 設計:在自描述的同時,達到抽象的目標。設計良好的 API ,開發者可以快速上手,沒必要經常抱著手冊和文檔,也沒必要頻繁光顧技術支持社區。(end instanceof Date)) {    end = new Date(end);  }  return Math.floor((end.getTime() - start.getTime()) / 86400000);};加了短短的6行代碼,我們的方法強大到可以接收 Date 對象,數字的時間戳,甚至像 Sat Sep 08 2012 15:34:35 GMT+0200
  • JavaScript開發重型跨平臺應用以及架構
    今天準備好好談一談重型應用的架構以及技術選型,為接下來我的正式架構設計做個鋪墊。為什麼寫重型應用的架構和技術選型傳統的web前端,只能發個ajax請求,畫畫頁面。了不得寫個webApp想讓後端的同學們,了解下目前大前端的世界,現在的前端跟以前不一樣了,特別現在市場很缺高級前端,但是術業有專攻,這點我承認大前端的定義,太廣泛,在我看來,必須深入前端某個方向,以及能獨立設計不那麼複雜場景下的後端架構。在極客時間上提問了winter老師,我自我感覺已經良好,但是迷茫了。
  • 單片機實例分享,自製數字示波器
    為了攜帶方便,我曾經做過一臺簡易數字示波器(見圖22.2),材料成本只有150元左右,這臺數字示波器的設計思想是:簡單實用,價格低廉,容易製作。單片機ATmega16在電路中的主要作用是:(1)對A/D轉換後的數位訊號進行處理,轉換成LCM能接受的數據格式,輸出給它顯示;(2)產生ADS830E、IDT7205工作所需要的時鐘脈衝信號;(3)通過按鍵對示波器參數進行控制調節,輸出繼電器的控制信號。
  • 設計一個JavaScript插件系統,編程思維比死磕API更重要
    作者:Bryan Braun翻譯:張張原文:https://css-tricks.com/designing-a-javascript-plugin-system/WordPressBetaCalc的目標是成為一個簡約的JavaScript計算器,其他開發人員可以在其中添加「按鈕」。
  • 前端高效開發必備的 js 庫梳理
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫之前有很多人問學好前端需要學習哪些 js 庫, 主流框架應該學 vue 還是 react ? 針對這些問題, 筆者來說說自己的看法和學習總結.
  • 裴琳 · 微成長--web性能優化與前端工程
    ....任性的分割線web性能優化與前端工程 每個參與過開發企業級web應用的前端工程師或許都曾思考過前端性能優化方面的問題。這樣做會嚴重影響團隊成員間並行開發的效率,尤其是在團隊有版本管理的情況下,每天要花大量的時間進行代碼修改合併,這項成本是難以接受的。因此在前端工程界,總會看到周期性性能優化工作,辛勤的前端工程師每到月圓之夜就會傾巢出動根據優化原則做一次性能優化。
  • 數字電路設計盲點實例與對策分析
    介紹有關數字電路設計盲點的內容,將分別針對Tinning、數據傳輸、消耗電流、HDL編寫等項目,輔以實例進行現象、原因分析以及對策探討。首先要介紹的是二進位計數器(Binary Counter)的設計。