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实现图片遮罩效果鼠标hover以后出现文字
Nov 05 HTML / CSS
html5+css3气泡组件的实现
Nov 21 HTML / CSS
CSS3中的@keyframes关键帧动画的选择器绑定
Jun 13 HTML / CSS
总结30个CSS3选择器
Apr 13 HTML / CSS
HTML5 声明兼容IE的写法
May 16 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(三)
Jan 21 HTML / CSS
HTML5 预加载让页面得以快速呈现
Aug 13 HTML / CSS
Canvas globalCompositeOperation
Dec 18 HTML / CSS
html5利用canvas实现颜色容差抠图功能
Dec 23 HTML / CSS
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
Apr 08 HTML / CSS
html5 横向滑动导航栏的方法示例
May 08 HTML / CSS
HTML中的表单Form实现居中效果
May 25 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
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
2014/10/29 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
你应该知道PHP浮点数知识
2015/05/13 PHP
比较完整的微信开发php代码
2016/08/02 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
js 文本滚动效果的实例代码
2013/08/17 Javascript
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
js模拟支付宝密码输入框
2017/04/11 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
2018/08/24 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
extjs4图表绘制之折线图实现方法分析
2020/03/06 Javascript
解决Antd 里面的select 选择框联动触发的问题
2020/10/24 Javascript
Vue实现Header渐隐渐现效果的实例代码
2020/11/05 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
在Python中使用__slots__方法的详细教程
2015/04/28 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
python距离测量的方法
2018/03/06 Python
Python序列循环移位的3种方法推荐
2018/04/09 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
在职人员函授期间自我评价分享
2013/11/08 职场文书
终止劳动合同协议书
2014/04/14 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
群众路线个人剖析材料
2014/10/07 职场文书
学习群众路线的心得体会
2014/11/05 职场文书
养成教育工作总结
2015/08/13 职场文书
《确定位置》教学反思
2016/02/18 职场文书
写作技巧:怎样写好一份优秀工作总结?
2019/08/14 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书