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 相关文章推荐
Prototype Function对象 学习
Jul 12 Javascript
[原创]js获取数组任意个不重复的随机数组元素
Mar 15 Javascript
javascript 数据类型转换(parseInt,parseFloat)
Jul 20 Javascript
基于JQuery实现异步刷新的代码(转载)
Mar 29 Javascript
DOM基础教程之使用DOM
Jan 19 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
Jul 20 Javascript
JS中Swiper的使用和轮播图效果
Aug 11 Javascript
微信小程序开发animation心跳动画效果
Aug 16 Javascript
如何基于javascript实现贪吃蛇游戏
Feb 09 Javascript
JavaScript代码异常监控实现过程详解
Feb 17 Javascript
vue页面引入three.js实现3d动画场景操作
Aug 10 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
Aug 31 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
星际原理概述
2020/03/04 星际争霸
新浪新闻小偷
2006/10/09 PHP
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
php 取得瑞年与平年的天数的代码
2009/08/10 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
php实现小程序支付完整版
2018/10/09 PHP
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
jquery+css实现动感的图片切换效果
2015/11/25 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
python中for用来遍历range函数的方法
2018/06/08 Python
Python logging模块原理解析及应用
2020/08/13 Python
五种Python转义表示法
2020/11/27 Python
Shopee马来西亚:随拍即卖,最佳行动电商拍卖平台
2017/06/05 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
业务助理岗位职责
2013/11/18 职场文书
市场营销毕业生自荐信
2013/11/23 职场文书
教师档案管理制度
2014/01/23 职场文书
预备党员表决心书
2014/03/11 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
酒店开业策划方案
2014/06/02 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
Python实现机器学习算法的分类
2021/06/03 Python
Python实现为PDF去除水印的示例代码
2022/04/03 Python