使用canvas绘制超炫时钟


Posted in HTML / CSS onDecember 17, 2014

先上效果图:

使用canvas绘制超炫时钟

复制代码
代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>canvas钟表</title>
<meta name="Keywords" content="">
<meta name="author" content="@my_programmer">
<style type="text/css">
body{margin:0;}
</style>
</head>
<body onload="run()">
<canvas id="canvas" width=400 height=400 style="border: 1px #ccc solid;">如果你看到这段文字,说明你的浏览器弱爆了!</canvas>
<script>
window.onload=draw;
function draw() {
var canvas=document.getElementById('canvas');
var context=canvas.getContext('2d');
context.save(); ///////////////////////////////////保存
context.translate(200,200);
var deg=2*Math.PI/12;
//////////////////////////////////////////////////表盘
context.save();
context.beginPath();
for(var i=0;i<13;i++){
var x=Math.sin(i*deg);
var y=-Math.cos(i*deg);
context.lineTo(x*150,y*150);
}
var c=context.createRadialGradient(0,0,0,0,0,130);
c.addColorStop(0,"#22f");
c.addColorStop(1,"#0ef")
context.fillStyle=c;
context.fill();
context.closePath();
context.restore();
//////////////////////////////////////////////////数字
context.save();
context.beginPath();
for(var i=1;i<13;i++){
var x1=Math.sin(i*deg);
var y1=-Math.cos(i*deg);
context.fillStyle="#fff";
context.font="bold 20px Calibri";
context.textAlign='center';
context.textBaseline='middle';
context.fillText(i,x1*120,y1*120);
}
context.closePath();
context.restore();
//////////////////////////////////////////////////大刻度
context.save();
context.beginPath();
for(var i=0;i<12;i++){
var x2=Math.sin(i*deg);
var y2=-Math.cos(i*deg);
context.moveTo(x2*148,y2*148);
context.lineTo(x2*135,y2*135);
}
context.strokeStyle='#fff';
context.lineWidth=4;
context.stroke();
context.closePath();
context.restore();
//////////////////////////////////////////////////小刻度
context.save();
var deg1=2*Math.PI/60;
context.beginPath();
for(var i=0;i<60;i++){
var x2=Math.sin(i*deg1);
var y2=-Math.cos(i*deg1);
context.moveTo(x2*146,y2*146);
context.lineTo(x2*140,y2*140);
}
context.strokeStyle='#fff';
context.lineWidth=2;
context.stroke();
context.closePath();
context.restore();
///////////////////////////////////////////////////文字
context.save();
context.strokeStyle="#fff";
context.font=' 34px sans-serif';
context.textAlign='center';
context.textBaseline='middle';
context.strokeText('canvas',0,65);
context.restore();
/////////////////////////////////////////////////new Date
var time=new Date();
var h=(time.getHours()%12)*2*Math.PI/12;
var m=time.getMinutes()*2*Math.PI/60;
var s=time.getSeconds()*2*Math.PI/60;</p> <p>////////////////////////////////////////////////时针
context.save();
context.rotate( h + m/12 + s/720) ;
context.beginPath();
context.moveTo(0,6);
context.lineTo(0,-85);
context.strokeStyle="#fff";
context.lineWidth=6;
context.stroke();
context.closePath();
context.restore();
//////////////////////////////////////////////分针
context.save();
context.rotate( m+s/60 ) ;
context.beginPath();
context.moveTo(0,8);
context.lineTo(0,-105);
context.strokeStyle="#fff";
context.lineWidth=4;
context.stroke();
context.closePath();
context.restore();
/////////////////////////////////////////////秒针
context.save();
context.rotate( s ) ;
context.beginPath();
context.moveTo(0,10);
context.lineTo(0,-120);
context.strokeStyle="#fff";
context.lineWidth=2;
context.stroke();
context.closePath();
context.restore();
context.restore();/////////////////////////////栈出
setTimeout(draw, 1000);/////////////////////////////计时器</p> <p>}</p> <p></script>
</body>
</html>
HTML / CSS 相关文章推荐
玩转CSS3色彩
Jan 16 HTML / CSS
CSS3 开发工具收集
Apr 17 HTML / CSS
css3发光搜索表单分享
Apr 11 HTML / CSS
css3给背景图片加颜色遮罩的方法
Nov 05 HTML / CSS
CSS3实现线性渐变用法示例代码详解
Aug 07 HTML / CSS
HTML高亮关键字的实现代码
Oct 22 HTML / CSS
基于Html5实现的react拖拽排序组件示例
Aug 13 HTML / CSS
HTML5 device access 设备访问详解
May 24 HTML / CSS
HTML5 与 XHTML2
Oct 17 HTML / CSS
html5构建触屏网站之touch事件介绍
Jan 07 HTML / CSS
html5唤起app的方法
Nov 30 HTML / CSS
使用iframe+postMessage实现页面跨域通信的示例代码
Jan 14 HTML / CSS
24个canvas基础知识小结
Dec 17 #HTML / CSS
html5使用canvas绘制文字特效
Dec 15 #HTML / CSS
html5使用canvas绘制太阳系效果
Dec 15 #HTML / CSS
html5使用canvas绘制一张图片
Dec 15 #HTML / CSS
html5使用canvas画三角形
Dec 15 #HTML / CSS
html5使用canvas画空心圆与实心圆
Dec 15 #HTML / CSS
html5使用canvas画一条线
Dec 15 #HTML / CSS
You might like
php radio 单选框获取与保持值的实现代码
2010/05/15 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
PHP获取指定日期是星期几的实现方法
2016/11/30 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
很可爱的输入框
2008/08/03 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
详解Javascript ES6中的箭头函数(Arrow Functions)
2016/08/24 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
[00:03]DOTA2新版本PA至宝展示
2014/11/19 DOTA
python optparse模块使用实例
2015/04/09 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
python列表生成式与列表生成器的使用
2018/02/23 Python
Python实现购物车购物小程序
2018/04/18 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
pandas如何处理缺失值
2019/07/31 Python
python实现PID算法及测试的例子
2019/08/08 Python
django框架forms组件用法实例详解
2019/12/10 Python
基于python实现检索标记敏感词并输出
2020/05/07 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
法务专员岗位职责
2014/01/02 职场文书
关于青春的演讲稿
2014/05/05 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript