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 相关文章推荐
js动态为代码着色显示行号
May 29 Javascript
jQuery制作仿Mac Lion OS滚动条效果
Feb 10 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
Aug 21 Javascript
使用jQuery处理AJAX请求的基础学习教程
May 10 Javascript
javascript函数的四种调用模式
Jan 08 Javascript
简单实现JS上传图片预览功能
Apr 14 Javascript
前端构建工具之gulp的语法教程
Jun 12 Javascript
详解vue.js移动端导航navigationbar的封装
Jul 05 Javascript
js 图片转base64的方式(两种)
Apr 24 Javascript
Node.js引入UIBootstrap的方法示例
May 11 Javascript
puppeteer实现html截图的示例代码
Jan 10 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
Feb 12 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下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
用PHP实现Ftp用户的在线管理
2012/02/16 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
three.js实现围绕某物体旋转
2017/01/25 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
php使用递归与迭代实现快速排序示例
2014/01/23 Python
python网络编程学习笔记(一)
2014/06/09 Python
python 统计代码行数简单实例
2017/05/04 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
python创建n行m列数组示例
2019/12/02 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
Python实现像awk一样分割字符串
2020/09/15 Python
HTML5为输入框添加语音输入功能的实现方法
2017/02/06 HTML / CSS
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
三年级评语大全
2014/04/23 职场文书
网络技术专业求职信
2014/05/02 职场文书
大四学生个人总结
2015/02/15 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
生产实习心得体会范文
2016/01/22 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript