1. 程式人生 > >用canvas和js畫了個鐘錶,跟大家分享一下

用canvas和js畫了個鐘錶,跟大家分享一下

<pre name="code" class="javascript">(function () {
var mycanvas=document.getElementById("mycanvas");
var otex=mycanvas.getContext("2d");
function time() {
    otex.clearRect(0,0,500,500);
    //畫大圓
    otex.beginPath();
    otex.arc(250,250,200,0,2*Math.PI);
    otex.strokeStyle="#abcdef";
    otex.lineWidth=10;
    otex.closePath();
    otex.stroke();

    //秒針
    otex.strokeStyle="grey";
    otex.lineWidth=5;
    for(var i=0;i<60;i++){
        otex.save();
        otex.beginPath();
        otex.translate(250,250);
        otex.rotate(i*6*Math.PI/180);
        otex.moveTo(0,-195);
        otex.lineTo(0,-180);
        otex.closePath();
        otex.stroke();
        otex.restore();
    }


    //畫時針針
    otex.strokeStyle="blue";
    otex.lineWidth=10;

    for(var i=0;i<12;i++){
        otex.save();//記得使用
        otex.beginPath();
        otex.translate(250,250);
        otex.rotate(i*30*Math.PI/180);
        otex.moveTo(0,-175);
        otex.lineTo(0,-195);
        otex.closePath();
        otex.stroke();
        otex.restore();//記得使用
    }

    var now=new Date();
    var h=now.getHours();
    var m=now.getMinutes();
    var s=now.getSeconds();

    //計算小時
    otex.save();//記得使用
    otex.beginPath();
    otex.strokeStyle="blue";
    otex.lineWidth=5;
    otex.translate(250,250);
    otex.rotate((h+m/60)*30*Math.PI/180);
    otex.moveTo(0,10);
    otex.lineTo(0,-125);
    otex.closePath();
    otex.stroke();
    otex.restore();//記得使用

    //分
    otex.save();//記得使用
    otex.beginPath();
    otex.strokeStyle="red";
    otex.lineWidth=4;
    otex.translate(250,250);
    otex.rotate((m+s/60)*6*Math.PI/180);
    otex.moveTo(0,10);
    otex.lineTo(0,-165);
    otex.closePath();
    otex.stroke();
    otex.restore();//記得使用

    //秒
    otex.save();//記得使用
    otex.beginPath();
    otex.strokeStyle="red";
    otex.lineWidth=4;
    otex.translate(250,250);
    otex.rotate(s*6*Math.PI/180);
    otex.moveTo(0,10);
    otex.lineTo(0,-185);
    otex.closePath();
    otex.stroke();
    otex.restore();//記得使用
}
    time();
    setInterval(time,1000)
})();

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>鐘錶</title></head><style> *{margin: 0;padding: 0;}</style><body> <canvas id="mycanvas" width="500" height="600" style=" position: relative;left:0;right:0;margin:0 auto"> </canvas><script src="main.js"></script></body>

相關推薦

canvasjs鐘錶大家分享一下

<pre name="code" class="javascript">(function () { var mycanvas=document.getElementById("mycanvas"); var otex=mycanvas.getContext("

【挖坑埋你】我違反保密協議正在被通緝我覺得我很快就會被抓走這個祕密我不得不說了,其實人類已經在2012年12月25日世界末日滅絕的差不多了,僅存一批科學家不到一百倖存者開啟拯救毀滅計劃,用了五年

挖坑埋你 我違反了保密協議,正在被通緝,我覺得我很快就會被抓走,這個祕密我不得不說了,其實人類已經在2012年12月25日世界末日滅絕的差不多了,僅存了一批科學家和不到一百個倖存者,開啟了拯救毀滅計劃,用了五年...

使用three.js的簡單的牆壁 在牆上挖做紀念

   專案要用到web3d 但是webgl學習起來太麻煩,先用three.js庫寫這點,初期做個記錄。    關於框架的基本搭建和js引入,場景相機等的基本新增就不說明了,隨便搜一下就一堆說明,重點說下如何在牆壁上挖一個門出來。    

原生JS編寫簡易進度條還請各位前輩指教~

classname 學習 UNC TP .com 開始學習 com get 能說 剛開始學習JS不久,以及第一次來到博客園,第一次進行分享博文。。。 噢,不對,不能說是分享,而是學習請教,請前輩多多指教,各個方面都可以~ 感謝您的路過~ <!DOC

Linux 組 快速

用戶名 1.4 name log pmo home ont 解析 刪除 1用戶 (Linux中“只有超級管理員”才有權限操作 用戶 和組) 1.1添加用戶 useradd 命令 例如 :useradd hly //添加了一個新賬戶 hly 用戶添加後 會存放在一個文

linux關於組的幾配置文件—/etc/passwd、/etc/shadow、/etc/group/etc/gshadow

分隔 間隔 oem 配置文件 目錄 msg 密碼 login oldboy 1./etc/passwd存儲用戶信息 [root@oldboy ~]# head /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bi

pythonmatplotlib雙座標系曲線

 有時候寫論文的時候不免會遇到畫曲線圖,而且還有可能需要畫雙座標系(雙Y軸)的曲線圖,在百度中找了許久,先mark一下,以下程式碼就是我論文中用到的,以後應該還會用到,先儲存在這裡。結果圖如下: im

Canvas屬性動畫造一隻萌蠢的“小鬼”

最近沒事的時候想自己寫一個支援下拉重新整理,上拉載入的自定義View。寫著寫著,就覺得最常見的“一個圈轉啊轉”的進度條太普通了。 於是,就想看看有沒有更有趣的一點的載入效果。在GitHub上以”android loading”為關鍵字一搜索,就發現有作者開源了

放肆地 UIBezierPath CAShapeLayer 各種圖形

CAShapeLayer 是 CALayer 的子類,但是比 CALayer 更靈活,可以畫出各種圖形,當然,你也可以使用其他方式來畫,隨你。 雜談 在 CAShapeLayer 中,也可以像 CALayer 一樣指定它的 frame 來畫,就像這樣:

CSS JS 實現元素的水平垂直居中

一、CSS 實現(2種方法) 方法1:已知要居中元素的寬高 .d1{ width:200px; height:200px; background-

js 6-16字元使用字母加數字或符號的組合密碼

推薦幾個學習地址: http://blog.csdn.net/mu_rain/article/details/5435745 正則表示式的寫法: (?=.*[0-9])(?=.*[a-z])(?=

canvas結合js字_1

上一篇文章已經講解了一下canvas的常用API,所以本章不再重複一遍,首先,我們先把頁面做出來: <!doctype html> <html> <head> <meta charset="utf-8"> <title&

使用canvasjs實現多種圖形拖動效果

<!doctype html> <html> <head>     <title> </title>     <meta http-equiv="X-UA-Compatible" content="IE=9

JavaJquery實現一個砸金蛋例子

之前在網上找到了一個Jquery+PHP實現的砸金蛋的例子,正好公司也要我寫一個類似的砸金蛋的功能,於是在網上找了找參考,用Jsp程式也弄了一個出來,首先是Html的效果,我打算每次在頁面上只顯示一個金蛋,點選的時候用Ajax提交,Java在後臺處理一下返回結果

分別CC++實現連結串列結構

C實現:這裡寫程式碼片 LINKED_LIST.h typedef struct S_NODE { float data; struct S_NODE *link; }Node; //建立連結串列 Node* Create()

過濾器 攔截器 6區別別再傻傻分不清

>本文收錄在個人部落格:[www.chengxy-nds.top](http://www.chengxy-nds.top),技術資料共享,同進步 週末有個小夥伴加我微信,向我請教了一個問題:老哥,**過濾器 (`Filter`) 和 攔截器 (`Interceptor`) 有啥區別啊?** 聽到題目我的第一

今天學習js些總結分享大家

要求 js文件 優先 encode mas src 全局變量 nan span 一、1.javascript的作用   是基於對象和事件驅動的語言,應用於客戶端 基於對象:提供好了很多對象,可以直接拿過來使用,不需要創建 事件驅動: html做網站靜態效果,jav

phpJS 判斷http還是https以及獲得當前url的方法

$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FOR

HashMap Hashtable 的 6 區別最後一個沒幾個人知道!

HashMap 和 Hashtable 是 Java 開發程式設計師必須要掌握的,也是在各種 Java 面試場合中必須會問到的。 但你對這兩者的區別瞭解有多少呢? 現在,棧長我給大家總結一下,或許有你不明朗的地方,在棧長的指點下都會撥開迷霧見晴天。 1、執行緒安全 Hashtable 是執行緒安全的,Hash