JavaScript Canvas绘制圆形时钟效果


Posted in Javascript onAugust 20, 2020

本文实例为大家分享了Canvas时钟效果展示的具体代码,供大家参考,具体内容如下

<html lang="en"> 
<head> 
 <meta charset="UTF-8"> 
 <title></title> 
 <style> 
 canvas{ 
  display: block; 
  margin: 0 auto; 
  background-color: #fdffad; 
  border: 1px solid #000; 
 } 
 </style> 
 <script type="text/javascript"> 
 
 document.addEventListener('DOMContentLoaded',function(){ 
  var oC=document.querySelector('canvas'); 
  var gd=oC.getContext('2d'); 
  var r=oC.width/2; 
 
  function drawBackground() { 
  gd.save(); 
  //渐变 
 
  var ra = gd.createLinearGradient(600, 0, 400, 0); 
  ra.addColorStop(1, '#2dd9ff'); 
  ra.addColorStop(0, '#8c48dd'); 
 
  //表盘 
  gd.translate(r, r); 
  gd.beginPath(); 
  gd.fillStyle = ra; 
  gd.lineWidth = 10; 
  gd.strokeStyle = '#211f4e'; 
  gd.arc(0, 0, r-5, 0, Math.PI *2, false); 
  gd.fill(); 
  gd.stroke(); 
  //数字 
  for (var i = 1; i < 13; i++) { 
   var rad=i * Math.PI * 2 / 12; 
   var x = Math.sin(rad)*(r-70); 
   var y= -Math.cos(rad)*(r-70); 
   gd.fillStyle = "red"; 
   gd.font = "bold 80px Calibri"; 
   gd.lineWidth = 1; 
   gd.textAlign = 'center'; 
   gd.textBaseline = 'middle'; 
   gd.strokeText(i, x, y); 
  } 
  //点 
  for (var i = 0; i < 60; i++) { 
   gd.beginPath(); 
   var rad=i * Math.PI * 2 / 60; 
   var x = Math.sin(rad)*(r-30); 
   var y= -Math.cos(rad)*(r-30); 
   if (i % 5 == 0) { 
   gd.fillStyle = 'red'; 
   } 
   else { 
   gd.fillStyle = '#ccc' 
   } 
   gd.lineWidth = 2; 
   gd.arc(x, y, 6, 0, Math.PI * 2, false); 
   gd.fill(); 
   gd.stroke(); 
   gd.closePath(); 
  } 
  } 
  //时针 
  function drawHour(h,m){ 
  gd.save(); 
  gd.beginPath(); 
  var rad=2*Math.PI/12*h; 
  var mrad=2*Math.PI/12/60*m; 
  gd.rotate(rad+mrad); 
  gd.lineWidth=20; 
  gd.lineCap='round'; 
  gd.moveTo(0,10); 
  gd.lineTo(0,-r/3); 
  gd.stroke(); 
  gd.closePath(); 
  gd.restore(); 
  } 
  //分针 
  function drawMinutes(m){ 
  gd.save(); 
  gd.beginPath(); 
  var rad=2*Math.PI/60*m; 
  gd.rotate(rad); 
  gd.lineWidth=10; 
  gd.lineCap='round'; 
  gd.moveTo(0,10); 
  gd.lineTo(0,-r/2); 
  gd.stroke(); 
  gd.closePath(); 
  gd.restore(); 
  } 
  //秒针 
  function drawSeconds(s){ 
  gd.save(); 
  gd.beginPath(); 
  var rad=2*Math.PI/60*s; 
  gd.rotate(rad); 
  gd.fillStyle='red'; 
  gd.moveTo(-2,20); 
  gd.lineTo(2,20); 
  gd.lineTo(1,-r+100); 
  gd.lineTo(-1,-r+100); 
  gd.fill(); 
  gd.closePath(); 
  gd.restore(); 
  } 
  //圆点 
  function drawPoint(){ 
  gd.beginPath(); 
  gd.fillStyle='#fff'; 
  gd.arc(0,0,5,Math.PI*2,false); 
  gd.fill(); 
  } 
 
  function drawClock(){ 
  gd.clearRect(0,0,oC.width,oC.height); 
  var oDate=new Date(); 
  var h=oDate.getHours(); 
  var m=oDate.getMinutes(); 
  var s=oDate.getSeconds(); 
  drawBackground(); 
  drawHour(h,m); 
  drawMinutes(m); 
  drawSeconds(s); 
  drawPoint(); 
  gd.restore(); 
 
  } 
  drawClock(); 
  setInterval(drawClock,1000); 
 },false); 
 </script> 
</head> 
<body> 
<canvas width="800" height="800"></canvas> 
</body> 
</html>

效果图:

JavaScript Canvas绘制圆形时钟效果

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

Javascript 相关文章推荐
javascript 按回车键相应按钮提交事件
Nov 02 Javascript
jquery easyui 结合jsp简单展现table数据示例
Apr 18 Javascript
js自定义鼠标右键的实现原理及源码
Jun 23 Javascript
理解javascript中的回调函数(callback)
Sep 02 Javascript
jQuery过滤选择器详解
Jan 13 Javascript
javascript实现状态栏中文字动态显示的方法
Oct 20 Javascript
JavaScript动态设置div的样式的方法
Dec 26 Javascript
jQuery自定义插件详解及实例代码
Dec 29 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
May 17 Javascript
JavaScript原生实现观察者模式的示例
Dec 15 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
Apr 20 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
Aug 11 Javascript
基于JavaScript实现的插入排序算法分析
Apr 14 #Javascript
基于JavaScript实现的折半查找算法示例
Apr 14 #Javascript
AngularJS之自定义服务详解(factory、service、provider)
Apr 14 #Javascript
基于JavaScript实现的顺序查找算法示例
Apr 14 #Javascript
vue组件中点击按钮后修改输入框的状态实例代码
Apr 14 #Javascript
angularjs实现首页轮播图效果
Apr 14 #Javascript
如何使用bootstrap框架 bootstrap入门必看!
Apr 13 #Javascript
You might like
有关 PHP 和 MySQL 时区的一点总结
2008/03/26 PHP
将一维或多维的数组连接成一个字符串的php代码
2010/08/08 PHP
php显示时间常用方法小结
2015/06/05 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
ThinkPHP5分页paginate代码实例解析
2020/11/10 PHP
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
AngularJS入门教程之Hello World!
2014/12/06 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
Python读写Excel文件方法介绍
2014/11/22 Python
python实现中文转换url编码的方法
2016/06/14 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
省三好学生申请材料
2014/01/22 职场文书
静心口服夜广告词
2014/03/20 职场文书
交通事故协议书
2014/04/15 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
大学生助学金感谢信
2015/01/21 职场文书
文艺演出主持词
2015/07/01 职场文书
趣味运动会赞词
2015/07/22 职场文书
怎样写工作总结啊!
2019/06/18 职场文书