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 相关文章推荐
麻雀虽小五脏俱全 Dojo自定义控件应用
Sep 04 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
Nov 14 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
Feb 17 Javascript
JavaScript不刷新实现浏览器的前进后退功能
Nov 05 Javascript
Angularjs material 实现搜索框功能
Mar 08 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
May 10 Javascript
原生js和jquery分别实现横向导航菜单效果
May 13 Javascript
静态页面html中跳转传值的JS处理技巧
Jun 22 Javascript
微信小程序 地图(map)实例详解
Nov 16 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
Jan 21 Javascript
使用Layui搭建后台管理界面的操作方法
Sep 20 Javascript
解决vue项目运行npm run serve报错的问题
Oct 26 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+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
php生成txt文件标题及内容的方法
2014/01/16 PHP
php实现微信公众平台账号自定义菜单类
2015/10/11 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
php函数式编程简单示例
2019/08/08 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
Javascript模板技术
2007/04/27 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
html向js方法传递参数具体实现
2013/08/08 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
js实现简单进度条效果
2020/03/25 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
[25:45]2018DOTA2亚洲邀请赛4.5SOLO赛 Sylar vs Paparazi
2018/04/06 DOTA
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
python函数参数(必须参数、可变参数、关键字参数)
2019/08/16 Python
python3.6中@property装饰器的使用方法示例
2019/08/17 Python
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
远程调用的原理
2014/07/05 面试题
个人委托函范文
2015/01/29 职场文书
食品质检员岗位职责
2015/04/08 职场文书
教师节校长致辞
2015/07/31 职场文书
高中政治教学反思
2016/02/23 职场文书
导游词之沈阳植物园
2019/11/30 职场文书
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS