使用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 优势以及网页设计师如何使用CSS3技术
Jul 29 HTML / CSS
详解Html5中video标签那些属性和方法
Jul 01 HTML / CSS
html5 worker 实例(一) 为什么测试不到效果
Jun 24 HTML / CSS
五个2015 年最佳HTML5 框架
Nov 11 HTML / CSS
HTML5移动端手机网站开发流程
Apr 25 HTML / CSS
深入剖析HTML5 内联框架iFrame
May 04 HTML / CSS
HTML5拖拽的简单实例
May 30 HTML / CSS
详解使用postMessage解决iframe跨域通信问题
Nov 01 HTML / CSS
元素水平垂直居中的方式
Mar 31 HTML / CSS
浅谈由position属性引申的css进阶讨论
May 25 HTML / CSS
深入理解margin塌陷和margin合并的解决方案
Jun 26 HTML / CSS
CSS中实现动画效果-附案例
Feb 28 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(2)
2006/10/09 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
Python import用法以及与from...import的区别
2015/05/28 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
2017/12/25 Python
python中类的属性和方法介绍
2018/11/27 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
用Python逐行分析文件方法
2019/01/28 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
关于迟到的检讨书
2014/01/26 职场文书
品牌推广策划方案
2014/05/28 职场文书
高中军训的心得体会
2014/09/01 职场文书
四查四看整改措施
2014/09/19 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
单位介绍信格式
2015/01/31 职场文书
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
使用HttpSessionListener监听器实战
2022/03/17 Java/Android