JS+H5 Canvas实现时钟效果


Posted in Javascript onJuly 20, 2018

用JavaScript+Canvas来实现最简单的时钟效果,供大家参考,具体内容如下

效果图:

JS+H5 Canvas实现时钟效果

先看html代码:

<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
 <script type="text/javascript" src="js/demo3.js" ></script>
 </head>
 <body>
 <canvas id = "canvas"></canvas>
 </body>
</html>

JavaScript代码:

var canvas,context;
function draw(){//定义划时钟的方法
 var data = new Date();
 var hHoure = data.getHours();
 var mMin = data.getMinutes();
 var sSec = data.getSeconds();
 var hValue = (hHoure*30+mMin/2-90)*Math.PI/180; 
 var mValue = (mMin*6-90)*Math.PI/180;
 var sValue = (sSec*6 -90)*Math.PI/180;
 var x = 200,y = 200,r = 150;
 
 context.clearRect(0,0,canvas.width,canvas.height);
 context.moveTo(x,y);
 context.arc(x,y,r,0,6*Math.PI/180,false);
 //
 context.beginPath();
 context.lineWidth = 1;
 for(var i = 0;i<60;i++){
 context.moveTo(x,y);
 context.arc(x,y,r,6*i*Math.PI/180,6*(i+1)*Math.PI/180,false);
 }
 context.closePath();
 context.stroke();
 //
 context.beginPath();
 context.fillStyle = "white";
 context.moveTo(x,y);
 context.arc(x,y,r/1.1,-0,2*Math.PI,false);
 context.closePath();
 context.fill();
 // 
 context.beginPath();
 context.lineWidth = 3;
 for(var i = 0;i<12;i++){
 context.moveTo(x,y);
 context.arc(x,y,r,30*i*Math.PI/180,30*(i+1)*Math.PI,false);
 }
 context.closePath();
 context.stroke();
 //
 context.beginPath();
 context.fillStyle = "white";
 context.moveTo(x,y);
 context.arc(x,y,r/1.12,0,2*Math.PI,false);
 context.closePath();
 context.fill();
 
 context.beginPath();
 context.fillStyle = "black";
 context.moveTo(x,y);
 context.arc(x,y,r/30,0,2*Math.PI,false);
 context.fill(); 
 //
 context.beginPath();
 context.lineWidth = 5;
 context.moveTo(x,y);
 context.arc(x,y,r/2.5,hValue,hValue,false);
 context.stroke();
 //
 context.beginPath();
 context.lineWidth = 3;
 context.moveTo(x,y);
 context.arc(x,y,r/2,mValue,mValue,false);
 context.stroke(); 
 //
 context.beginPath();
 context.lineWidth = 2;
 context.moveTo(x,y);
 context.arc(x,y,r/1.6,sValue,sValue,false);
 context.stroke();
}
window.onload = function(){
 canvas = document.getElementById('canvas');
 context = canvas.getContext('2d');
 canvas.height = 500;
 canvas.width = 500;
 setInterval(draw,1000); 
 draw(); 
}

更多JavaScript时钟特效点击查看:JavaScript时钟特效专题

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
客户端js判断文件类型和文件大小即限制上传大小
Nov 20 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
May 07 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
Apr 10 Javascript
webpack实现一个行内样式px转vw的loader示例
Sep 13 Javascript
vue移动端项目缓存问题实践记录
Oct 29 Javascript
详解Vue2 添加对scss的支持
Jan 02 Javascript
一些你可能不熟悉的JS知识点总结
Mar 15 Javascript
VUE动态生成word的实现
Jul 26 Javascript
Vue-cli 移动端布局和动画使用详解
Aug 10 Javascript
vue组件开发之tab切换组件使用详解
Aug 21 Javascript
JS实现密码框效果
Sep 10 Javascript
vue-router 控制路由权限的实现
Sep 24 Javascript
详解处理bootstrap4不支持远程静态框问题
Jul 20 #Javascript
基于Vue+element-ui 的Table二次封装的实现
Jul 20 #Javascript
webpack+vue-cil中proxyTable处理跨域的方法
Jul 20 #Javascript
详解vue-cli官方脚手架配置
Jul 20 #Javascript
Vue中的异步组件函数实现代码
Jul 20 #Javascript
vue 中的keep-alive实例代码
Jul 20 #Javascript
Angularjs实现页面模板清除的方法
Jul 20 #Javascript
You might like
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
php 使用GD库为页面增加水印示例代码
2014/03/24 PHP
Thinkphp中import的几个用法详细介绍
2014/07/02 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
Angularjs上传文件组件flowjs功能
2017/08/07 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
js代码实现轮播图
2020/05/04 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
浅谈MySQL中的触发器
2015/05/05 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
使用Python创建简单的HTTP服务器的方法步骤
2019/04/26 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
往来会计岗位职责
2013/12/19 职场文书
办公室前台岗位职责
2014/01/04 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
客户答谢会致辞
2015/07/30 职场文书
团委副书记工作总结
2015/08/14 职场文书
Python必备技巧之函数的使用详解
2022/04/04 Python