JavaScript之“創意時鐘”項目

来源:http://www.cnblogs.com/pang951189/archive/2017/10/22/7707482.html
-Advertisement-
Play Games

“時鐘展示項目”說明文檔(文檔尾部附有相應代碼) 一、最終效果展示: 二、項目亮點 1.代碼結構清晰明瞭 2.可以實時動態顯示當前時間與當前日期 3.界面簡潔、美觀、大方 4.提高瀏覽器相容性 三、知識點彙總: jQuery、原生javascript、css3、h5 四、重難點解釋 1.各個指針的旋 ...


“時鐘展示項目”說明文檔(文檔尾部附有相應代碼

一、最終效果展示:

 

 

二、項目亮點

1.代碼結構清晰明瞭

 

2.可以實時動態顯示當前時間與當前日期

3.界面簡潔、美觀、大方

4.提高瀏覽器相容性

 

 

三、知識點彙總:

jQuery、原生javascript、css3、h5

四、重難點解釋

1.各個指針的旋轉角度的獲取

首先要明確如下概念:

時鐘指針旋轉一周360度

時針:

表盤上共有12小時,每經過一小時,要旋轉30度;

分針:

表盤上共有60個小格子,分針每走一分鐘,經過一個小格子,轉動6度;

秒針:

表盤上共有60個小格子,秒針每走一分鐘,經過一個小格子,也轉動6度;

(1)當前時間的獲取

 

舉個例子(以時針旋轉角度計算為例):  比如現在時間是 9:28;

時針應該在9和10之間,而通過 方式只能獲取到整點,所以既要獲取到當前的小時,也要獲取到當前的分鐘,這樣才能更好的來確定時針的旋轉角度,即為如下方式:

 

(2)旋轉角度的獲取

由於時針每經過一個小時後,旋轉30度,故獲取時針旋轉角度如下:

 

同理,分針與秒針的旋轉角度如下:

分針:

 

秒針:

 

為了使時鐘更加的精準,這裡精確到了毫秒;

(3)執行頻率,即秒針旋轉頻率控制

 

調整函數的執行時間間隔即可改變秒針轉動頻率。

 

五、項目待優化之處

1.頁面過於簡潔,有待進一步優化和改進;

2.作圖時未來得及在時鐘上畫上分秒的刻度;

 

六、項目中各部分代碼

1.HTML代碼

 1 <!DOCTYPE html>
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     <title>jQuery指針時鐘(附帶日期)</title>
 6     <!--引入外部css樣式-->
 7     <link rel="stylesheet" href="css/demo.css" type="text/css" media="screen" />
 8 </head>
 9 <body>
10     <!--引入jQuery庫文件-->
11     <script src="js/jquery-1.6.2.min.js"></script>
12     <!--引入外部js文件-->
13     <script src="js/script.js"></script>
14     <div style="text-align:center;clear:both">
15     </div>
16 </body>
17 </html>
View Code

2.css代碼

  1 *
  2 {
  3     margin:0;
  4     padding:0;
  5 }
  6 body
  7 {
  8     background:#f9f9f9;
  9     color:#000;
 10     font:15px Calibri, Arial, sans-serif;
 11     text-shadow:1px 2px 1px #FFFFFF;
 12 }
 13 a,
 14 a:visited
 15 {
 16     text-decoration:none;
 17     outline:none;
 18     color:#fff;
 19 }
 20 a:hover
 21 {
 22     text-decoration:underline;
 23     color:#ddd;
 24 }
 25      /*the footer  (尾部)*/
 26 footer
 27 {
 28     background:#444 url("../images/bg-footer.png") repeat;
 29     position:fixed;
 30     width:100%;
 31     height:70px;
 32     bottom:0;
 33     left:0;
 34     color:#fff;
 35     text-shadow:2px 2px #000;
 36     /*提高瀏覽器的相容性*/
 37     -moz-box-shadow:5px 1px 10px #000;
 38     -webkit-box-shadow:5px 1px 10px #000;
 39     box-shadow:5px 1px 10px #000;
 40 }
 41 footer h1
 42 {
 43     font:25px/26px Acens;
 44     font-weight:normal;
 45     left:50%;
 46     margin:0px 0 0 150px;
 47     padding:25px 0;
 48     position:relative;
 49     width:400px;
 50 }
 51 footer a.orig,
 52 a.orig:visited
 53 {
 54     background:url("../images/demo2.png") no-repeat right top;
 55     border:none;
 56     text-decoration:none;
 57     color:#FCFCFC;
 58     font-size:14px;
 59     height:70px;
 60     left:50%;
 61     line-height:50px;
 62     margin:12px 0 0 -400px;
 63     position:absolute;
 64     top:0;
 65     width:250px;
 66 }
 67      /*styling for the clock(時鐘樣式)*/
 68 #clock
 69 {
 70     position: relative;
 71     width: 600px;
 72     height: 600px;
 73     list-style: none;
 74     margin: 20px auto;
 75     background: url('../images/clock.png') no-repeat center;
 76     
 77 }
 78 #seconds,
 79 #minutes,
 80 #hours
 81 {
 82     position: absolute;
 83     width: 30px;
 84     height: 580px;
 85     left: 270px;
 86 }
 87 #date
 88 {
 89     position: absolute;
 90     top: 365px;
 91     color: #666;
 92     right: 140px;
 93     font-weight: bold;
 94     letter-spacing: 3px;
 95     font-family: "微軟雅黑";
 96     font-size: 30px;
 97     line-height: 36px;
 98 }
 99 #hours
100 {
101     background: url('../images/hands.png') no-repeat left;
102     z-index: 1000;
103 }
104 #minutes
105 {
106     background: url('../images/hands.png') no-repeat center;
107     width:25px;
108     z-index: 2000;
109 }
110 
111 #seconds
112 {
113     background: url('../images/hands.png') no-repeat right;
114     z-index: 3000;
115 }
View Code

3.js代碼

(1)需要下載一個js的引用包(百度或者谷歌一下你就知道)

(2)js代碼

 1 $(document).ready(function () {
 2 
 3     //動態插入HTML代碼,標記時鐘    
 4     var clock = [
 5         '<ul id="clock">',
 6         '<li id="date"></li>',
 7         '<li id="seconds"></li>',
 8         '<li id="hours"></li>',
 9         '<li id="minutes"></li>',
10         '</ul>'].join('');
11 
12     // 逐漸顯示時鐘,並把它附加到主頁面中    
13     $(clock).fadeIn().appendTo('body');
14 
15     //每一秒鐘更新時鐘視圖的自動執行函數
16     //也可以使用此方法: setInterval (function Clock (){})();
17     (function Clock() {
18         //得到日期和時間
19         var date = new Date().getDate(),        //得到當前日期
20            hours = new Date().getHours(),       //得到當前小時
21          minutes = new Date().getMinutes();        //得到當前分鐘
22          seconds = new Date().getSeconds(),     //得到當前秒
23               ms = new Date().getMilliseconds();//得到當前毫秒
24         //將當前日期顯示在時鐘上
25         $("#date").html(date);
26         //獲取當前秒數,確定秒針位置
27         var srotate = seconds + ms / 1000;
28         $("#seconds").css({
29             //確定旋轉角度
30             'transform': 'rotate(' + srotate * 6 + 'deg)',       
31         });
32         //獲取當前分鐘數,得到分針位置
33         var mrotate = minutes + srotate / 60; 
34         $("#minutes").css({
35             'transform': 'rotate(' + mrotate * 6 + 'deg)',
36             //提高瀏覽器的相容性
37             '-moz-transform': 'rotate(' + mrotate * 6 + 'deg)',
38             '-webkit-transform': 'rotate(' + mrotate * 6 + 'deg)'
39         });
40         //獲取當前小時,得到時針位置
41         var hrotate = hours % 12 + (minutes / 60);
42         $("#hours").css({
43             'transform': 'rotate(' + hrotate * 30 + 'deg)',
44             //提高瀏覽器的相容性
45             '-moz-transform': 'rotate(' + hrotate * 30 + 'deg)',
46             '-webkit-transform': 'rotate(' + hrotate * 30 + 'deg)'
47         });
48         //每一秒後執行一次時鐘函數
49         setTimeout(Clock, 1000);
50     })();
51 });
View Code

4.一些必要的圖片素材(c此處不再一一列舉或展示)

 

 

註釋:

1.Transform 屬性

2.rotate() 方法

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在JavaScript中,一個線程執行的時候不依靠其他線程處理完畢我們稱為非同步,相反一個線程必須等待直到另一個線程處理完畢我們則稱為同步。打個比方: (1)同步就是你在煮速食麵的時候必須等水開了,你才會放調料和速食麵; (2)非同步就是你在煮速食麵的時候不需要等水開了,你可以剛開始開火的時候,就放調料 ...
  • 後臺node ...
  • 閉包 先上 "維基百科" )的定義 在電腦科學中,閉包(英語:Closure),又稱詞法閉包(Lexical Closure)或函數閉包(function closures),是引用了自由變數的函數。這個被引用的自由變數將和這個函數一同存在,即使已經離開了創造它的環境也不例外。所以,有另一種說法認 ...
  • 一、前言 前段時間,公司有個APP項目需要支持不同平臺,於是採用了Ionic2 + cordova + angular2,在搭建環境過程中遇到了不少問題,剛好最近有時間整理出來。 二、開發環境搭建 參考這個網站步驟搭建:https://github.com/DonaldTdz/Ionic2Quick ...
  • 一、前言 今天繼續第四章的學習內容,開始學習複合變換的知識。 二、正文 Example1: 複合變換 在書中,作者為我們封裝了一套用於變換的矩陣對象:Matrix4對象。它包含以下幾種方法: Example2: 動畫 requestAnimationFrame(func): 請求瀏覽器在將來某時刻回 ...
  • 一、背景圖像顯示: ①background-size:規定背景圖像的大小; 值:像素值、百分比、auto、cover、contain ②background-origin :規定背景圖像的起始位置; 值:padding-box(預設)、content-box、border-box ③backgrou ...
  • 首先,介紹一下自己吧。 我是個普普通通的大一學弟,喜歡WEB前端、手繪、音樂和跆拳道; 曾經有一段灰濛蒙的日子,但是不想再提了; 命運如此,我來到了河北科技大學; 我本身是一個少言寡語的人,所以也沒太多朋友; 喜歡一個人在下雨天喝著咖啡,看窗外過往人流; 希望遇到一個拼搏的團隊,希望有個熱心的老師, ...
  • 一、介紹 TypeScript是JavaScript的超集,擴展了JavaScript的語法,也意味著他支持所有的 JavaScript 語法 它支持ES6規範 強大的IDE支持 是Angular2的開發語言 二、搭建TypeScript開發環境 compiler(編譯器) 作用:能將TypeScr ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...