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动画效果小结(推荐)
Jul 25 HTML / CSS
谈谈对css属性box-sizing的了解
Jan 04 HTML / CSS
CSS3实现缺角矩形,折角矩形以及缺角边框
Dec 20 HTML / CSS
html5 touch事件实现触屏页面上下滑动(二)
Mar 10 HTML / CSS
如何使用localstorage代替cookie实现跨域共享数据问题
Apr 18 HTML / CSS
html5之Canvas路径绘图、坐标变换应用实例
Dec 26 HTML / CSS
【HTML5】Canvas绘制简单图片教程
May 13 HTML / CSS
详解HTML5中的picture元素响应式处理图片
Jan 03 HTML / CSS
HTML5轻松实现全屏视频背景的示例
Apr 23 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
Jan 07 HTML / CSS
CSS元素定位之通过元素的标签或者元素的id、class属性定位详解
Sep 23 HTML / CSS
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
Dec 24 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抓取页面与代码解析 推荐
2010/07/23 PHP
php之XML转数组函数的详解
2013/06/07 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
jQuery Ajax文件上传(php)
2009/06/16 Javascript
Javascript 事件流和事件绑定
2009/07/16 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
cookie的secure属性详解
2015/04/08 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
python制作填词游戏步骤详解
2019/05/05 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
2019/09/30 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
Python列表解析操作实例总结
2020/02/26 Python
python cookie反爬处理的实现
2020/11/01 Python
Java里面有没有全局变量?为什么?
2015/02/06 面试题
学生会主席演讲稿
2014/04/25 职场文书
责任担保书范文
2014/05/21 职场文书
小学班级特色活动方案
2014/08/31 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
nginx日志格式分析和修改
2022/04/28 Servers