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 相关文章推荐
关于document.cookie的使用javascript
Apr 11 Javascript
jQuery Lightbox 图片展示插件使用说明
Apr 25 Javascript
javascript 通用简单的table选项卡实现
May 07 Javascript
关于eval 与new Function 到底该选哪个?
Apr 17 Javascript
jQuery :first选择器使用介绍
Aug 09 Javascript
JavaScript:Date类型全面解析
May 19 Javascript
JQuery学习总结【一】
Dec 01 Javascript
原生JS实现图片轮播切换效果
Dec 15 Javascript
js实现鼠标拖动功能
Mar 20 Javascript
Vue下的国际化处理方法
Dec 18 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
Jan 03 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
Feb 26 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 $_SERVER详解
2009/01/16 PHP
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
2016/11/15 PHP
代码生成器 document.write()
2007/04/15 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
利用yarn实现一个webpack+react种子
2016/10/25 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
vue3.0 搭建项目总结(详细步骤)
2019/05/20 Javascript
Vue+Java+Base64实现条码解析的示例
2020/09/23 Javascript
python 中文乱码问题深入分析
2011/03/13 Python
python在命令行下使用google翻译(带语音)
2014/01/16 Python
说一说Python logging
2016/04/15 Python
Python中functools模块函数解析
2017/03/12 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
2017/05/25 Python
Python中字典和集合学习小结
2017/07/07 Python
python机器人行走步数问题的解决
2018/01/29 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
2019/06/17 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
前台接待员岗位职责
2014/01/02 职场文书
九年级家长会邀请函
2014/01/15 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
新闻发布会策划方案
2014/06/12 职场文书
大连星海广场导游词
2015/02/10 职场文书
2015年求职自荐信范文
2015/03/04 职场文书
python基础详解之if循环语句
2021/04/24 Python
go语言中fallthrough的用法说明
2021/05/06 Golang
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技