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获取距今n天前的日期
Jul 08 Javascript
JS获取select的value和text值的简单实例
Feb 26 Javascript
Javascript学习笔记之数组的构造函数
Nov 23 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
Jan 26 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
Jun 23 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
Jan 26 Javascript
JS三目运算(三元运算)方法详解
Mar 01 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
May 17 Javascript
js实现搜索栏效果
Nov 16 Javascript
微信小程序一周时间表功能实现
Oct 17 Javascript
vue实现整屏滚动切换
Jun 29 Javascript
vue实现放大镜效果
Sep 17 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
PHP4实际应用经验篇(5)
2006/10/09 PHP
CodeIgniter安全相关设置汇总
2014/07/03 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
PHP单例模式详细介绍
2015/07/01 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
CodeIgniter整合Smarty的方法详解
2017/08/25 PHP
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
vue.js仿hover效果的实现方法示例
2019/01/28 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
python中去空格函数的用法
2014/08/21 Python
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
python多线程调用exit无法退出的解决方法
2019/02/18 Python
Django实现分页显示效果
2019/10/31 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
python实现加密的方式总结
2020/01/19 Python
Python龙贝格法求积分实例
2020/02/29 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
工程造价自荐信
2013/10/09 职场文书
质量承诺书怎么写
2014/05/24 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
表扬稿格式范文
2015/01/16 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python