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 相关文章推荐
Riot.js 快速的JavaScript单元测试框架
Nov 09 Javascript
javascript call方法使用说明
Jan 11 Javascript
jQuery 操作option的实现代码
Mar 03 Javascript
JS实现字符串转日期并比较大小实例分析
Dec 09 Javascript
jQuery实现HTML表格单元格的合并功能
Apr 06 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
Apr 29 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
Jun 29 Javascript
纯原生js实现table表格的增删
Jan 05 Javascript
JS简单获取日期相差天数的方法
Apr 24 Javascript
vue表单绑定实现多选框和下拉列表的实例
Aug 12 Javascript
js尾调用优化的实现
May 23 Javascript
浅谈vue 组件中的setInterval方法和window的不同
Jul 30 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
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
五段实用的js高级技巧
2011/12/20 Javascript
Javascript模块化编程(一)模块的写法最佳实践
2013/01/17 Javascript
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
react 生命周期实例分析
2020/05/18 Javascript
python encode和decode的妙用
2009/09/02 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
浅析python打包工具distutils、setuptools
2018/04/20 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
创建青年文明号材料
2014/05/09 职场文书
岗位职责说明书模板
2014/07/30 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
行政处罚告知书
2015/07/01 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
职场领导同事生日简短祝福语
2019/08/06 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle