html5时钟实现代码


Posted in HTML / CSS onOctober 22, 2010

复制代码
代码如下:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<style type="text/css">
canvas{position:absolute;top:0px;left:0px;}
</style>
<title>时钟</title>
</head>
<body>
<canvas id="canvas" width="200" height="200"></canvas>
<canvas id="p_canvas" width="200" height="200"></canvas>
<script type="text/javascript">
//获取绘图对象
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');

var p_canvas = document.getElementById('p_canvas');
var p_context = p_canvas.getContext('2d');

var height=200,width=200;
//画大圆
context.beginPath();
context.strokeStyle="#009999";
context.arc(width/2,height/2,width/2-1,0,Math.PI*2,true);
context.stroke();
context.closePath();
//画中间点
context.beginPath();
context.fillStyle="#000";
context.arc(width/2,height/2,3,0,Math.PI*2,true);
context.fill();
context.closePath();

//画小刻度
var angle = 0,radius = width/2 - 4;
for(var i=0;i<60;i++){
context.beginPath();
context.strokeStyle="#000";
//确认刻度的起始点
var x = width/2 + radius*Math.cos(angle),y = height/2 + radius*Math.sin(angle);
context.moveTo(x,y);
//这里是用来将刻度的另一点指向中心点,并给予正确的角度
//PI是180度,正确的角度就是 angle+180度,正好相反方向
var temp_angle = Math.PI +angle;
context.lineTo(x +3*Math.cos(temp_angle),y+3*Math.sin(temp_angle));
context.stroke();
context.closePath();
angle+=6/180*Math.PI;
}
//大刻度
angle = 0,radius = width/2 - 4;
context.textBaseline = 'middle';
context.textAlign = 'center';
context.lineWidth = 2;
for(var i=0;i<12;i++){
var num = i+3>12? i+3-12:i+3 ;
context.beginPath();
context.strokeStyle="#FFD700";
var x = width/2 + radius*Math.cos(angle),y = height/2 + radius*Math.sin(angle);
context.moveTo(x,y);
var temp_angle = Math.PI +angle;
context.lineTo(x +8*Math.cos(temp_angle),y+8*Math.sin(temp_angle));
context.stroke();
context.closePath();
//大刻度 文字
context.fillText(num,x+16*Math.cos(temp_angle),y+16*Math.sin(temp_angle));
angle+=30/180*Math.PI;
}

function Pointer(){
var p_type = [['#000',70,1],['#ccc',60,2],['red',50,3]];
function drwePointer(type,angle){
type = p_type[type];
angle = angle*Math.PI*2 - 90/180*Math.PI;
var length= type[1];
p_context.beginPath();
p_context.lineWidth = type[2];
p_context.strokeStyle = type[0];
p_context.moveTo(width/2,height/2);
p_context.lineTo(width/2 + length*Math.cos(angle),height/2 + length*Math.sin(angle));
p_context.stroke();
p_context.closePath();

}
setInterval(function (){
p_context.clearRect(0,0,height,width);
var time = new Date();
var h = time.getHours();
var m = time.getMinutes();
var s = time.getSeconds();
h = h>12?h-12:h;
h = h+m/60;
h=h/12;
m=m/60;
s=s/60;
drwePointer(0,s);
drwePointer(1,m);
drwePointer(2,h);
},500);
}
var p = new Pointer();
</script>
</body>
</html>

HTML / CSS 相关文章推荐
css3制作动态进度条以及附加jQuery百分比数字显示
Dec 13 HTML / CSS
css3 自定义字体font-face使用介绍
May 14 HTML / CSS
css3中背景尺寸background-size详解
Sep 02 HTML / CSS
css3实例教程 一款纯css3实现的环形导航菜单
Oct 20 HTML / CSS
HTML5 Canvas概述
Aug 26 HTML / CSS
html5使用canvas画一条线
Dec 15 HTML / CSS
逼真的HTML5树叶飘落动画
Mar 01 HTML / CSS
有关HTML5中背景音乐的自动播放功能
Oct 16 HTML / CSS
详解window.open被浏览器拦截的解决方案
Jul 18 HTML / CSS
记一次高分屏下canvas模糊问题
Feb 17 HTML / CSS
CSS3实现的水平标题菜单
Apr 14 HTML / CSS
HTML+CSS 实现顶部导航栏菜单制作
Jun 03 HTML / CSS
html5 canvas 使用示例
Oct 22 #HTML / CSS
IE9下html5初试小刀
Sep 21 #HTML / CSS
HTML5边玩边学(3)像素和颜色
Sep 21 #HTML / CSS
HTML5边玩边学(2)基础绘图实现方法
Sep 21 #HTML / CSS
HTML5边玩边学(1)画布实现方法
Sep 21 #HTML / CSS
html5 学习简单的拾色器
Sep 03 #HTML / CSS
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
Jul 20 #HTML / CSS
You might like
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
PHP实现文件上传后台处理脚本
2020/03/04 PHP
goto语法在PHP中的使用教程
2020/09/17 PHP
asp 取文本框名称代码
2008/12/02 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
JS跨域总结
2012/08/30 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
说说如何在Vue.js中实现数字输入组件的方法
2019/01/08 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
js实现筛选功能
2020/11/24 Javascript
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
Python写的一个简单DNS服务器实例
2014/06/04 Python
python递归计算N!的方法
2015/05/05 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
python实现石头剪刀布小游戏
2021/01/20 Python
python中调试或排错的五种方法示例
2019/09/12 Python
Python高级property属性用法实例分析
2019/11/19 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
python drf各类组件的用法和作用
2021/01/12 Python
浅析HTML5 Landmark
2020/09/11 HTML / CSS
应届大专毕业生自我鉴定
2014/04/08 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
Nginx工作模式及代理配置的使用细节
2022/03/21 Servers