javascript绘制简单钟表效果


Posted in Javascript onApril 07, 2020

本文给大家分享一个canvas的时钟绘制,供大家参考,具体内容如下

javascript绘制简单钟表效果

复制可直接使用

<!DOCTYPE html>
<html>

 <head>
 <meta charset="UTF-8">
 <title></title>
 <style>
 h1 {
 text-align: center;
 }
 
 div {
 width: 400px;
 height: 400px;
 margin: 10px auto;
 padding: 0;
 }
 </style>
 </head>

 <body>
 <h1>手绘时钟</h1>
 <hr />
 <div>
 <canvas id="c1" width="400px" height="400px">
 
 </canvas>
 </div>
 <script type="text/javascript">
 var clock = document.getElementById("c1").getContext("2d");
 
// var clock = $("#huabu").get(0).getContext("2d"); //$中使用画布
 
 function play() {
 clock.clearRect(0, 0, 400, 400);
 clock.save();
 clock.translate(200, 200); //把画布中心转移到canvas中间
 biaopan();
 run();
 clock.restore();
 }
 setInterval(function() {
 play();
 }, 1000);

 function biaopan() {
 //绘制表盘
 clock.strokeStyle = " #9932CC";
 clock.lineWidth = 5;
 clock.beginPath();
 clock.arc(0, 0, 195, 0, 2 * Math.PI);
 clock.stroke();
 
 //刻度(小时)
 clock.strokeStyle = "#9932CC";
 clock.lineWidth = 5;
 for(var i = 0; i < 12; i++) {
  clock.beginPath();
  clock.moveTo(0, -190);
  clock.lineTo(0, -170);
  clock.stroke();
  clock.rotate(2 * Math.PI / 12);
 }
 //刻度(分钟)
 clock.strokeStyle = "#9932CC";
 clock.lineWidth = 3;
 for(var i = 0; i < 60; i++) {
  clock.beginPath();
  clock.moveTo(0, -190);
  clock.lineTo(0, -180);
  clock.stroke();
  clock.rotate(2 * Math.PI / 60);
 }
 //绘制文字
 clock.textAlign = "center";
 clock.textBaseline = "middle";
 clock.fillStyle = "#6495ED";
 clock.font = "20px 微软雅黑"
 for(var i = 1; i < 13; i++) {
  clock.fillText(i,Math.sin(2*Math.PI /12*i)*150,Math.cos(2*Math.PI/12*i)*-150);
 }
 
 }

 function run() {
 var date = new Date();
 var h = date.getHours();
 var m = date.getMinutes();
 var s = date.getSeconds();
// if(h > 12) {
//  h = h - 12;
// }
 //日期
 var week = date.getDay();
 var month = date.getMonth() + 1;
 var day = date.getDate();
 switch (week){
  case 1: week = "星期一";
  break;
  case 2: week = "星期二";
  break;
  case 3: week = "星期三";
  break;
  case 4: week = "星期四";
  break;
  case 5: week = "星期五";
  break;
  case 6: week = "星期六";
  break;
  default: week = "星期天";
  break;
 }
 clock.save();
 clock.textAlign = "center";
 clock.textBaseline = "middle";
 clock.fillStyle = "black";
 clock.font = "16px"
 clock.fillText(week,-2,-118);
 clock.fillText(month+" 月",-90,2);
 clock.fillText(day+" 号",90,0);
 clock.stroke();
 clock.restore();

 //时针
 //分针60格 分针5格 
 clock.save();
 clock.rotate(2 * Math.PI / 12 * h + (2 * Math.PI / 60 * m + 2 * Math.PI / 60 * s / 60) / 12);
 clock.strokeStyle = "black";
 clock.lineWidth = 7;
 clock.beginPath();
 clock.moveTo(0, 0);
 clock.lineTo(0, -80);
 clock.lineCap = "round";
 clock.stroke();
 clock.restore();
 //分针
 //秒针60格 分针一格
 clock.save();
 clock.beginPath();
 clock.strokeStyle = "#D2691E";
 clock.lineWidth = 5;
 clock.rotate(2 * Math.PI / 60 * m + 2 * Math.PI / 60 * s / 60);
 clock.moveTo(0, 0);
 clock.lineTo(0, -110);
 clock.lineCap = "round";
 clock.stroke();
 clock.restore();
 //秒针
 clock.strokeStyle = "red";
 clock.rotate(2 * Math.PI / 60 * s);
 clock.lineWidth = 4;
 clock.beginPath();
 clock.moveTo(0, 0);
 clock.lineTo(0, -120);
 clock.lineCap = "round";
 clock.stroke();
 //中心
 clock.fillStyle = " #CCFFFF";
 clock.lineWidth = 5;
 clock.beginPath();
 clock.arc(0, 0, 10, 0, 2 * Math.PI);
 clock.fill();
 clock.strokeStyle = "cadetblue";
 clock.stroke();
 
 }
 </script>
 </body>

</html>

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

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

Javascript 相关文章推荐
Javascript中各种trim的实现详细解析
Dec 10 Javascript
jQuery实现的仿百度分页足迹效果代码
Oct 30 Javascript
json格式的javascript对象用法分析
Jul 04 Javascript
AngularJs表单校验功能实例代码
Feb 09 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
Apr 21 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
Apr 27 Javascript
js用类封装pop弹窗组件
Oct 08 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
Nov 15 Javascript
使用kbone解决Vue项目同时支持小程序问题
Nov 08 Javascript
vue项目中监听手机物理返回键的实现
Jan 18 Javascript
JS数组Reduce方法功能与用法实例详解
Apr 29 Javascript
如何在vue-cli中使用css-loader实现css module
Jan 07 Vue.js
js中位数不足自动补位扩展padLeft、padRight实现代码
Apr 06 #Javascript
jquery实现两个div中的元素相互拖动的方法分析
Apr 05 #jQuery
js实现登录时记住密码的方法分析
Apr 05 #Javascript
Vue插件之滑动验证码用法详解
Apr 05 #Javascript
解决node终端下运行js文件不支持ES6语法
Apr 04 #Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
Apr 04 #jQuery
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 #jQuery
You might like
解析php中获取url与物理路径的总结
2013/06/21 PHP
Thinkphp中的volist标签用法简介
2014/06/18 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
php通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
JMenuTab简单使用说明
2008/03/13 Javascript
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
2019/08/27 jQuery
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python检测服务器是否正常
2014/02/16 Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
Python中暂存上传图片的方法
2015/02/18 Python
构建Python包的五个简单准则简介
2015/06/15 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
纯css3制作煽动翅膀的蝴蝶的示例
2018/04/23 HTML / CSS
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
中专生自我鉴定书范文
2013/12/28 职场文书
全民健身日活动方案
2014/01/29 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
领导欢迎词致辞
2015/01/23 职场文书
幼儿园托班开学寄语(2016春季)
2015/12/03 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android