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 相关文章推荐
ajax 文件上传应用简单实现
Mar 03 Javascript
jQuery的Ajax时无响应数据的解决方法
May 25 Javascript
原生js结合html5制作简易的双色子游戏
Mar 30 Javascript
JavaScript中实现map功能代码分享
Jun 11 Javascript
全面接触神奇的Bootstrap导航条实战篇
Aug 01 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
Mar 02 Javascript
jQuery日程管理控件glDatePicker用法详解
Mar 29 jQuery
老生常谈ES6中的类
Jul 31 Javascript
django使用channels2.x实现实时通讯
Nov 28 Javascript
VUE解决 v-html不能触发点击事件的问题
Oct 28 Javascript
vue中监听路由参数的变化及方法
Dec 06 Javascript
Vue 实例中使用$refs的注意事项
Jan 29 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
使用PHPMailer发送邮件实例
2017/02/15 PHP
php获取excel文件数据
2017/04/21 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
jquery实现滑动特效代码
2015/08/10 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
js实现一个简单的数字时钟效果
2017/03/29 Javascript
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
Python中的多重装饰器
2015/04/11 Python
python Django批量导入不重复数据
2016/03/25 Python
python挖矿算力测试程序详解
2019/07/03 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
Python hashlib模块加密过程解析
2019/11/05 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
python 装饰器的使用示例
2020/10/10 Python
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
高中历史教学反思
2014/02/08 职场文书
一年级语文教学反思
2014/02/13 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
暗恋桃花源观后感
2015/06/12 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
优化Mysql查询的示例
2022/04/26 MySQL
Redis 异步机制
2022/05/15 Redis