canvas 动画 时钟clock
<canvas id="clock" width="500" height="500"></canvas>
function drawClock(){
var canvas = document.querySelector("#clock");
var ctx = canvas.getContext("2d");
drawDial(ctx); //绘制变盘
// 绘制时针、分针、秒针
var pi = Math.PI;
var time = new Date();
var s = time.getSeconds();
var m = time.getMinutes();
var h = time.getHours();
var angleSecound = s*pi/30;
var angleMinute = m*pi/30 + angleSecound/60;
var angleHour = h*pi/6 + angleMinute/12;
drawHand(angleSecound,190,2,"blue",ctx);
drawHand(angleMinute,150,4,"green",ctx);
drawHand(angleHour,80,6,"red",ctx);
requestAnimationFrame(drawClock);
}
function drawHand(angle,length,width,color,ctx){
var pi = Math.PI;
ctx.save();
ctx.translate(250,250);
ctx.rotate(-pi/2 + angle);
ctx.beginPath();
ctx.lineCap = "round";
ctx.moveTo(-4,0);
ctx.lineTo(length,0);
ctx.lineWidth = width;
ctx.strokeStyle = color;
ctx.stroke();
ctx.closePath();
ctx.restore();
}
function drawDial(ctx){
var pi = Math.PI;
ctx.clearRect(0,0,500,500);
ctx.save();
//绘制外周圆弧
ctx.translate(250,250);
ctx.strokeStyle="gray";
ctx.beginPath();
ctx.arc(0,0,200,0,2*pi);
ctx.stroke();
ctx.closePath();
//绘制刻度
for(var i=0;i<60;i++){
ctx.save();
ctx.rotate(-pi/2 + i*pi/30);
ctx.beginPath();
ctx.moveTo(180,0);
ctx.lineTo(195,0);
ctx.strokeStyle = i%5 ? "blue":"red";
ctx.lineWidth = i%5 ? "2":"4";
ctx.stroke();
ctx.closePath();
ctx.restore();
}
ctx.restore();
}
drawClock();
截图:

canvas 动画 时钟clock的更多相关文章
- [JS,Canvas]日历时钟
[JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...
- 使用canvas绘制时钟
使用canvas绘制时钟 什么使canvas呢?HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图 ...
- [ZZ+CH] Html5 canvas+js 时钟
总之新Blog入驻以后,又开始老习惯,到处折腾自定义的空间,放些东西. 想起以前大一的时候做过一个Javascript的时间显示器,现在想做一个时钟,当然现在老奸巨猾,会先去看一看有前辈写过没. 前辈 ...
- html5学习(一)--canvas画时钟
利用空余时间学习一下html5. <!doctype html> <html> <head></head> <body> <canva ...
- canvas粒子时钟
前面的话 本文将使用canvas实现粒子时钟效果 效果展示 点阵数字 digit.js是一个三维数组,包含的是0到9以及冒号(digit[10])的二维点阵.每个数字的点阵表示是7*10大小的二维数组 ...
- canvas画时钟,重拾乐趣!
canvas时钟--效果图 一.先来简单介绍画时钟需要的canvas知识 1.在HTML页面中添加canvas元素,必须定义canvas元素的id属性值以便接下来的调用. HTML代码: <ca ...
- HTML5 Canvas爱心时钟代码
这是一款数字时钟动画,数字又多个小爱心组成,又何问起整理,随着时间推进,每一秒钟新数字替换旧数字,旧数字离去使用天女散花动画,花是五颜六色的. 查看效果:http://hovertree.com/te ...
- 16个富有创意的HTML5 Canvas动画特效集合
HTML5技术正在不断的发展和更新,越来越多的开发者也正在加入HTML5阵营,甚至在移动开发上HTML5的地位也是越来越重要了.HTML5中的大部分动画都是通过Canvas实现,因为Canvas就像一 ...
- canvas实现时钟
最近在看新浪体育网球频道(http://sports.sina.com.cn/tennis/)的时候,看到了下面的劳力士广告的时钟是用canvas做的,于是也实现了一个简单的canvas时钟.直接上代 ...
随机推荐
- 使用NetBox实现ASP网页封装为EXE教程
简单的形容就是把ASP文件打包 成一个EXE文件,并且不需要在调试的机器上安装IIS即可正常调试.如果按照说明书来操作的话,观看比较繁琐,本人为方便大家使用,现制作一个简单的使用教程. 封装过程 1. ...
- 【转】Exchange Server 的防火墙开放端口
关于exchange所用到的端口参阅下面的文档, 适用于exchange2010sp2. http://technet.microsoft.com/en-us/library/bb331973.asp ...
- 使用STM32CubeMX生成RTC工程[秒中断]
现在我们在之前的工程(http://www.cnblogs.com/libra13179/p/7170791.html)中修改 /** ******************************** ...
- delphi RTTI 四 获取类属性列表
delphi RTTI 四 获取类属性列表 GetPropList(btn1.ClassInfo, tkAny, PropList) PropCount := GetTypeData(btn1.Cla ...
- ABAP-邮件发送
*&---------------------------------------------------------------------* *& Report ZRICO_TES ...
- html:块级元素和行内元素的特点
display:block: 块元素会独自占据一整行,或者多行,可以任意设置其大小尺寸,是用于搭建网页布局的必须部分,使网页结构更加紧凑合理. 块级元素width.height.padding.mar ...
- Linux 循环创建多个线程
这里说一下相关的基础知识: 线程概念 什么是线程 LWP:light weight process 轻量级的进程,本质仍是进程(在Linux环境下) 进程:独立地址空间,拥有PCB 线 ...
- Unity 菜单拓展
添加自定义菜单项 [MenuItem("test/item1 %g")] public static void haha() { Debug.Log("this is a ...
- LeetCode OJ 2. Add Two Numbers
You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...
- LeetCode OJ 19. Remove Nth Node From End of List
Given a linked list, remove the nth node from the end of list and return its head. For example, Give ...