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动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
Aug 18 HTML / CSS
纯css3实现效果超级炫的checkbox复选框和radio单选框
Sep 01 HTML / CSS
CSS3动画效果回调处理详解
Dec 10 HTML / CSS
Css3新特性应用之视觉效果实例
Dec 12 HTML / CSS
利用CSS3实现进度条的两种姿势详解
Mar 21 HTML / CSS
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
Jul 13 HTML / CSS
HTML5 本地存储 LocalStorage详解
Jun 24 HTML / CSS
HTML5 中新的全局属性(整理)
Jul 31 HTML / CSS
HTML5制作表格样式
Nov 15 HTML / CSS
CSS3 实现NES游戏机的示例代码
Apr 21 HTML / CSS
css height属性中的calc方法详解
Jun 03 HTML / CSS
css如何把元素固定在容器底部的四种方式
Jun 16 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导入大量数据到mysql性能优化技巧
2014/12/29 PHP
php制作简单模版引擎
2016/04/07 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
jQuery实现的手动拖动控制进度条效果示例【测试可用】
2018/04/18 jQuery
Angular模版驱动表单的使用总结
2018/05/05 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
在react中使用vuex的示例代码
2018/07/30 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[35:39]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第二场 11.22
2020/11/24 DOTA
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
python制作抖音代码舞
2019/04/07 Python
python文件操作的简单方法总结
2019/11/07 Python
python中get和post有什么区别
2020/06/19 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
.NET remoting中对象激活的两种方式
2015/06/08 面试题
即将毕业大学生自荐信
2014/01/24 职场文书
个性发展自我评价
2014/02/11 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
如何理解PHP核心特性命名空间
2021/05/28 PHP
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技