精美JS、CSS動畫時鐘設計、實現與實例分析

2020-12-05 編程技術棧
動態時鐘設計實例

之前文章介紹過JavaScript數字時鐘的設計與實現,主要用於藉助數組實現對數字時鐘數字進行存儲與標識。在獲取客戶端系統時間之後,選擇對應時鐘數字進行顯示即可。本文主要介紹基於CSS動畫的時鐘設計與實現。

01實現思路與原理

本文設計使用CSS旋轉元素屬性,對時鐘對應指針進行角度旋轉。主要設計內容包括錶盤及指針的設計。其中錶盤素材如下圖所示:

錶盤素材圖片

通過DIV層的嵌套,製作對應的時針、分針、秒針。前端頁面布局結構描述如下圖所示:

前端布局HTML文件源碼

在前端布局中我們使用clock層作為容器用於容納全部時鐘內容。內部分別嵌套hour層用於表示時針、min層用於表示分針,sec層用於表示秒針。通過進一步設置以上class對應的style樣式屬性值,實現頁面的布局。頁面靜態效果展示如下:

帶時針前端頁面靜態效果

在初始時刻所有指針全部重疊,在完成前端設計之後即可使用javascript腳本語言獲取用戶客戶端時間,並從從時間中分別讀取對應的小時、分鐘、秒數,並將其轉化為所需旋轉的角度。使用rotateZ()方法實現繞Z軸進行轉動。

在定義好轉動角度之後,為實現時鐘動態效果需要進一步使用setInterval定時器方法,設置在指定周期時間內重複獲取客戶端時間,轉化後執行旋轉。最終呈現時鐘效果展示如下:

時鐘動態展示效果

02核心代碼分析與說明

以上給出了設計開發動態時鐘的基本思路及原理,主要包括素材(錶盤)的準備,頁面布局,客戶端時間獲取,旋轉方法使用,定時器的使用等。其中頁面布局是實現效果的基礎,本例定理了clock類選擇器用於實現錶盤及相關效果的設計,該類選擇器屬性設置描述如下:

clock類選擇器

clock類選擇器定義如上圖所示,其中box-shadow主要完成陰影效果設置,border-radius屬性主要用於實現將div形狀改為圓形。整體布局使用flex進行布局,並設置對其方式為居中。錶盤中心白色圓點使用before偽元素進行設置,其樣式定義如下:

錶盤中心定義

以clock層為容器,進一步需要定義時針、分針與秒針對應的div相關屬性。其中小時、分鐘指針效果定義樣式描述如下圖:

小時分鐘定義

在小時分鐘指針定義時使用before偽元素進行定義,通過position進行絕對定位,小時、分鐘、秒針使用寬度高度不同,並對指針邊緣使用border-radius進行圓角弧度設置。在相關層定義過程中使用z-index進行層疊順序的設置。

在前端代碼編寫完成之後,就需要使用JavaScript提供的new Date獲取客戶端當前時間,並從其中分離出小時分鐘秒對應的數值及轉化角度。實現代碼如下:

時間轉為旋轉角度

如上圖所示,其中deg為常量,表示錶盤最小刻度對應的角度,值為6;在轉換完成之後即可獲取時、分、秒對應的div元素,設置其style樣式,其中獲取元素代碼如下:

獲取時間指針對應元素

最後使用style屬性設置方法完成旋轉角度的設置,代碼描述如下:

使用style設置指針旋轉

在完成以上所有操作之後,可以將以上獲取時間、處理時間及旋轉設置的代碼封裝到一個定時器中,設置執行周期為300毫秒,最終完成案例設計。完整JavaScript代碼部分描述如下:

Js部分完整代碼

本例JavaScript部分完整代碼描述如上圖,如需完整案例代碼請關注並私信作者。

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

相關焦點

  • css 表單效果,純div+css實現
    純div+css實現,大家可以參考下,也許有一些問題,大家可以修正下<!<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>by 阿會楠 2008-12-4</title><script language="javascript" type="text/javascript">//js
  • 基於單片機旋轉時鐘的設計
    2 總體設計思想及方案文章擬採用16個發光二極體的亮滅來模擬時鐘錶盤,其旋轉用一個直流電機轉動來實現;時鐘的1s源信號用DS1302時鐘晶片產生;為了保證時鐘盤面顯示的穩定採用紅外對管來實現;為了對旋轉起來的電路板供電方便,採用無線供電;為了能夠方便地調節旋轉時鐘的時間,擬採用紅外遙控。
  • FPGA設計開發軟體Quartus II的使用技巧之: 典型實例-SignalTap II...
    同時使用基於AlteraFPGA的開發板將該實例進行下載驗證,完成工程設計的硬體實現。在本節中,將主要講解下面知識點。·QuartusII原理圖輸入方式。·QuartusII約束設計。·QuartusII工程編譯。·QuartusII硬體下載。
  • QRCanvas-動態生成二維碼的開源優秀js庫
    QRCanvas 能用來做什麼動態生成帶二維碼的海報是業務型產品中很常見的需求,之前分享過如何通過 html2canvas 將html+css寫出來的布局生成海報,而今天分享的 QRCanvas 則是專門滿足如何在前端生成動態二維碼的需求。
  • 不要再在JavaScript中寫 CSS了
    到了 2010 年,Backbone.js 出現,成為了應用狀態管理的行業標準。不久後,Knockout 和 Angular 雙向綁定的特點吸引了所有人。之後,React 和 Flux 出現,開啟了單頁應用(SPA)的新紀元,組件構造應用。 那麼 CSS 呢?
  • 基於STM32的低功耗溫溼度採集器的設計與實現
    本文中採用STM32F103RET6設計了溫溼度採集系統。該系統工作時間長約30天,低功耗模式採用了停止模式實現,溫溼度傳感器使用SHTIO溫溼度傳感器。結合實際使用環境,採集周期為5分鐘。採用18650鋰電池供電,具有SD卡存儲功能,且能實現USB全速通信和串口通信。
  • JS-ipfs為瀏覽器實現提供無限可能
    中我們回顧了go-ipfs的更新迭代,今天小編要跟大家介紹另一個使用IPFS構建的實現——JS-ipfs。 1、運行在Node.js和瀏覽器中 js-ipfs在Node.js,Electron和任何現代瀏覽器上開箱即用
  • css3 box-sizing屬性筆記
    通過從已設定的寬度和高度分別減去邊框和內邊距才能得到內容的寬度和高度;inherit:規定應從父元素繼承box-sizing屬性的值;實例:<!DOCTYPE html><html><head><meta charset="utf-8" /><title>css3 box-sizing屬性筆記</title><style type="text/css">body{background-color: #aaa;}div.container
  • 經典 用CSS實現表單form布局
    以下為引用的內容:style type="text/css" label{float: left;width: 80px;}form{margin:0px}input{width: 180px;border:1px solid #808080}
  • 手把手教你打造一個純CSS圖標庫
    通常做法就兩種: 直接使用圖片; 使用css/svg直接在瀏覽器中繪製圖標。 方案1:由於圖標圖片比較多,而且體積很小,為了減少請求所以很多時候我們會用雪碧圖這種技術來將圖標拼湊在同一張圖片裡面。你也能想到,一堆圖標的雪碧圖,修改維護會相當麻煩!現在比較好的方案是使用webpack引入圖片,小圖直接轉換成base64插入css中。
  • HTML+CSS實戰系列——盒模型製作
    >彈性盒模型學習目標一、CSS 盒子模型(Box Model)1、概念所有HTML元素可以看作盒子,在CSS中,"box model"這一術語是用來設計和布局時使用左右填充為50px(4)padding:25px;所有的填充都是25px3.5padding需要注意的問題padding會撐大容器3.6padding實現導航條
  • 用Node.js進行後端開發的特點與優勢
    從根本上說,Node.js是一種框架,是一種在瀏覽器後臺(或外部)運行JavaScript(JS)代碼的運行時(runtime)環境。而作為一種程式語言,由JavaScript編寫的統一代碼庫,不但加快了開發進程,而且實現了過往我們無法完成的Web開發任務。 其實,Node.js後端開發並非什麼新鮮事物,它既適用於企業級的應用程式,又適用於B2C類型的應用。
  • 小米有品推出智能時鐘,墨水屏設計,可測溫溼度
    老式的溫度計需要湊近看刻度,還是很不方便,最近從小米有品上入手了一款秒秒測智能時鐘溫溼度計,一下解決了我這個難題,和大家分享下使用體驗。 秒秒測溫溼度計採用簡約的白色紙盒包裝,正面印刷了產品外觀展示圖,內部包含智能時鐘、兩節7號電池、粘貼膠和說明書。
  • 可實現快速鎖定的FPGA片內延時鎖相環設計
    (DLL)是一種基於數字電路實現的時鐘管理技術。DLL可用以消除時鐘偏斜,對輸入時鐘進行分頻、倍頻、移相等操作。文中介紹了FPGA晶片內DLL的結構和設計方案,在其基礎上提出可實現快速鎖定的延時鎖相環系統性能較大程度上決定於系統的時鐘延遲和偏斜。由於FPGA具有豐富的可編程邏輯資源及時鐘網絡,隨之而來的時鐘延遲問題使得用戶設計的性能大打折扣。FPGA中的DLL模塊可提供零傳播延時,消除時鐘偏斜,從而進一步提高了FPGA的性能和設計的靈活性。 PLL是常用的時鐘管理電路,主要是基於模擬電路設計實現的,而DLL主要是基於數字電路設計實現的。
  • 編程嵌入式信號處理背板的開發設計
    摘要:介紹了基於Virtex系列FPGA和TMS320C40DSP的可編程通用信號處理背板的設計和製作;並對Virtex系列FPGA的性能和特點進行了分析;同時還敘述了可編程通用信號處理背板的調試;最後給出了背板應用開發實例。
  • 04一個實例講解靜態圖片上下、左右、旋轉移動效果
    位置移動動畫第一步:點擊「效果控制項」展開,找到「位置」。滑鼠左鍵雙擊紅色樹葉兒,拉到屏幕的左上角(下圖圈紅1),然後點「位置」左邊的鐘圖標變藍色(下圖紅2 的指處),這樣得到一個關鍵幀。第二步:播放針移動到5秒的時間線上,(下圖紅1),滑鼠左鍵直接拖動樹葉到右下角(下圖紅2 ),這樣自動得到了一個關鍵幀。