javascript繪制簡(jiǎn)單鐘表效果
本文給大家分享一個(gè)canvas的時(shí)鐘繪制,供大家參考,具體內(nèi)容如下
復(fù)制可直接使用
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> h1 { text-align: center; } div { width: 400px; height: 400px; margin: 10px auto; padding: 0; } </style> </head> <body> <h1>手繪時(shí)鐘</h1> <hr /> <div> <canvas id="c1" width="400px" height="400px"> </canvas> </div> <script type="text/javascript"> var clock = document.getElementById("c1").getContext("2d"); // var clock = $("#huabu").get(0).getContext("2d"); //$中使用畫布 function play() { clock.clearRect(0, 0, 400, 400); clock.save(); clock.translate(200, 200); //把畫布中心轉(zhuǎn)移到canvas中間 biaopan(); run(); clock.restore(); } setInterval(function() { play(); }, 1000); function biaopan() { //繪制表盤 clock.strokeStyle = " #9932CC"; clock.lineWidth = 5; clock.beginPath(); clock.arc(0, 0, 195, 0, 2 * Math.PI); clock.stroke(); //刻度(小時(shí)) clock.strokeStyle = "#9932CC"; clock.lineWidth = 5; for(var i = 0; i < 12; i++) { clock.beginPath(); clock.moveTo(0, -190); clock.lineTo(0, -170); clock.stroke(); clock.rotate(2 * Math.PI / 12); } //刻度(分鐘) clock.strokeStyle = "#9932CC"; clock.lineWidth = 3; for(var i = 0; i < 60; i++) { clock.beginPath(); clock.moveTo(0, -190); clock.lineTo(0, -180); clock.stroke(); clock.rotate(2 * Math.PI / 60); } //繪制文字 clock.textAlign = "center"; clock.textBaseline = "middle"; clock.fillStyle = "#6495ED"; clock.font = "20px 微軟雅黑" for(var i = 1; i < 13; i++) { clock.fillText(i,Math.sin(2*Math.PI /12*i)*150,Math.cos(2*Math.PI/12*i)*-150); } } function run() { var date = new Date(); var h = date.getHours(); var m = date.getMinutes(); var s = date.getSeconds(); // if(h > 12) { // h = h - 12; // } //日期 var week = date.getDay(); var month = date.getMonth() + 1; var day = date.getDate(); switch (week){ 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 = "星期天"; break; } clock.save(); clock.textAlign = "center"; clock.textBaseline = "middle"; clock.fillStyle = "black"; clock.font = "16px" clock.fillText(week,-2,-118); clock.fillText(month+" 月",-90,2); clock.fillText(day+" 號(hào)",90,0); clock.stroke(); clock.restore(); //時(shí)針 //分針60格 分針5格 clock.save(); clock.rotate(2 * Math.PI / 12 * h + (2 * Math.PI / 60 * m + 2 * Math.PI / 60 * s / 60) / 12); clock.strokeStyle = "black"; clock.lineWidth = 7; clock.beginPath(); clock.moveTo(0, 0); clock.lineTo(0, -80); clock.lineCap = "round"; clock.stroke(); clock.restore(); //分針 //秒針60格 分針一格 clock.save(); clock.beginPath(); clock.strokeStyle = "#D2691E"; clock.lineWidth = 5; clock.rotate(2 * Math.PI / 60 * m + 2 * Math.PI / 60 * s / 60); clock.moveTo(0, 0); clock.lineTo(0, -110); clock.lineCap = "round"; clock.stroke(); clock.restore(); //秒針 clock.strokeStyle = "red"; clock.rotate(2 * Math.PI / 60 * s); clock.lineWidth = 4; clock.beginPath(); clock.moveTo(0, 0); clock.lineTo(0, -120); clock.lineCap = "round"; clock.stroke(); //中心 clock.fillStyle = " #CCFFFF"; clock.lineWidth = 5; clock.beginPath(); clock.arc(0, 0, 10, 0, 2 * Math.PI); clock.fill(); clock.strokeStyle = "cadetblue"; clock.stroke(); } </script> </body> </html>
更多JavaScript時(shí)鐘特效點(diǎn)擊查看:JavaScript時(shí)鐘特效專題
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
CutePsWheel javascript libary 控制輸入文本框?yàn)榭墒褂脻L輪控制的js庫(kù)
實(shí)現(xiàn)類似于Photoshop控制面板輸入文本數(shù)字的效果,所以名稱叫做PsWheel。用于控制輸入數(shù)字類型文本框?qū)崿F(xiàn)鼠標(biāo)滾輪上下滑動(dòng)改變值,支持正整數(shù)、小數(shù)類型輸入文本。2010-02-02uniapp中使用vuex的過程(解決uniapp無(wú)法在data和template中獲取vuex數(shù)據(jù)問題)
這篇文章主要介紹了uniapp中使用vuex(解決uniapp無(wú)法在data和template中獲取vuex數(shù)據(jù)問題),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05javascript實(shí)現(xiàn)可全選、反選及刪除表格的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)可全選、反選及刪除表格的方法,實(shí)例展示了javascript針對(duì)表格全選、反選、刪除、隔行變色、刪除提示等常用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05js獲取當(dāng)前日期代碼適用于網(wǎng)頁(yè)頭部
大家在瀏覽網(wǎng)頁(yè)時(shí)可能會(huì)注意到網(wǎng)頁(yè)頭部有個(gè)不錯(cuò)的時(shí)間在顯示,看起來感覺不錯(cuò)于是自己也實(shí)現(xiàn)了一個(gè),下面是具體的代碼,感興趣的朋友可以參考下哈2013-06-06JavaScript全排列的六種算法 具體實(shí)現(xiàn)
這篇文章介紹了全排列的六種算法有,交換算法,鏈接算法,回溯算法等,有需要的朋友可以參考一下2013-06-06TypeScript中l(wèi)et和var的區(qū)別介紹
這篇文章主要介紹了TypeScript?let與var的區(qū)別,主要從作用域等這幾個(gè)方面做詳細(xì)介紹,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07