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实现动态CSS换肤技术的脚本
Jun 29 Javascript
2007/12/23更新创意无限,简单实用(javascript log)
Dec 24 Javascript
JS解析XML的实现代码
Nov 12 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
Apr 07 Javascript
javascript中数组的sort()方法的使用介绍
Dec 18 Javascript
js判断手机端(Android手机还是iPhone手机)
Jul 22 Javascript
JS出现失效的情况总结
Jan 20 Javascript
详解JavaScript RegExp对象
Feb 04 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
May 17 Javascript
node省市区三级数据性能测评实例分析
Nov 06 Javascript
Vue退出登录时清空缓存的实现
Nov 12 Javascript
vue-router为激活的路由设置样式操作
Jul 18 Javascript
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
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
使用dump函数,给php加断点测试
2013/06/25 PHP
php数组添加与删除单元的常用函数实例分析
2015/02/16 PHP
php取得字符串首字母的方法
2015/03/25 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
PHP crc32()函数讲解
2019/02/14 PHP
jquery easyui使用心得
2014/07/07 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
nodeJs爬虫的技术点总结
2018/05/13 NodeJs
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
nestjs返回给前端数据格式的封装实现
2021/02/22 Javascript
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
Python生成随机数组的方法小结
2017/04/15 Python
Win8下python3.5.1安装教程
2020/07/29 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
Weblogic和WebSphere不同特点
2012/05/09 面试题
应届毕业生求职信范文分享
2013/12/26 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL