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弹性伸缩布局之box布局
Jul 12 HTML / CSS
CSS3教程(6):创建网站多列
Apr 02 HTML / CSS
10个很棒的 CSS3 开发工具 推荐
May 16 HTML / CSS
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
Jan 07 HTML / CSS
css3 transform属性详解
Sep 30 HTML / CSS
css3实现简单的白云飘动背景特效
Oct 28 HTML / CSS
HTML5安全介绍之内容安全策略(CSP)简介
Jul 10 HTML / CSS
HTML5标签与HTML4标签的区别示例介绍
Jul 18 HTML / CSS
Canvas制作旋转的太极的示例
Mar 09 HTML / CSS
iframe在移动端的缩放的示例代码
Oct 12 HTML / CSS
AmazeUI底部导航栏与分享按钮的示例代码
Aug 18 HTML / CSS
带你了解CSS基础知识,样式
Jul 21 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
php cc攻击代码与防范方法
2012/10/18 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
JS实现的随机排序功能算法示例
2017/06/09 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
如何实现echarts markline标签名显示自己想要的
2020/07/20 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
使用python解析xml成对应的html示例分享
2014/04/02 Python
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
python 实现字符串下标的输出功能
2020/02/13 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
Python接口测试get请求过程详解
2020/02/28 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
倩碧美国官网:Clinique美国
2016/07/20 全球购物
高级3D打印市场:Gambody
2019/12/26 全球购物
中学家长会邀请函
2014/01/17 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
环境卫生标语
2014/06/09 职场文书
企业贷款委托书格式
2014/09/12 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书