平时在公司不忙的时候,就喜欢写一些小效果什么的,一来复习复习,二来可以发现一些问题。

今天在群里看别人发了一手表的图片,卧槽...妥妥的工作好多年的节奏,后来想想还是做好自己的事情算了,想那多干啥,就画了一个手表....

效果图,没有录制gif的

直接上代码:

html

<!DOCTYPE HTML>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>canvas clock</title><script type="text/javascript" src="percent.js"></script></head><body><canvas id="canvas" width="600" height="600"></canvas></body>
</html>
<script type="text/javascript">clock.canvasClock();
</script>

js

var clock=(function(){function _canvasClock(){var cvs=document.getElementById('canvas');var ctx=cvs.getContext('2d');var PI=Math.PI;var lineWidth=5;                                             //线宽var gradient=ctx.createLinearGradient(10,10,580,580);        //设置圆的颜色渐变gradient.addColorStop("0","#a251ff");gradient.addColorStop(1,"#2ec2ff");ctx.fillStyle = '#ef6670';ctx.fillRect(0,0,600,600);var drawBig=function(){var time=new Date();var second=time.getSeconds();                            //秒var Minute=time.getMinutes();                            //分var hour=time.getHours();                                //时//hour=hour+Minute/60;hour=hour>12?hour-12:hour;                               //表盘只有12小时
            ctx.clearRect(0,0,600,600);                              //清空给定矩形内的指定像素//画圆
            ctx.beginPath();ctx.lineWidth=lineWidth;ctx.strokeStyle=gradient;ctx.arc(300,300,290,0, PI * 2,false);ctx.stroke();ctx.closePath();ctx.beginPath();ctx.lineWidth=lineWidth;ctx.strokeStyle=gradient;ctx.arc(300,300,10,0, PI * 2,false);ctx.stroke();ctx.closePath();for(var i=0;i<60;i++){  ctx.save();                         //保存之前画布状态   ctx.lineWidth=4;                   //设置分针的粗细                 ctx.strokeStyle="#616161";          //设置分针的颜色                 ctx.translate(300,300);             //画布圆点设置        ctx.rotate(i*PI/30);                //角度*Math.PI/180=弧度,设置旋转角度 ctx.beginPath();                    //开始一条路径ctx.moveTo(0,-287);                 //相对画布圆点路径的起点ctx.lineTo(0,-283);                 //相对画布圆点路径的终点ctx.closePath();                    //结束一条路径ctx.stroke();                       //实际地绘制出通过 moveTo()和 lineTo()方法定义的路径ctx.restore();                      //restore() 方法将绘图状态置为保存值
            }for(var i=0;i<12;i++){ctx.save();ctx.lineWidth=4;ctx.strokeStyle=gradient;    ctx.translate(300,300);   ctx.rotate(i*PI/6);
                ctx.beginPath();  ctx.moveTo(0,-287);ctx.lineTo(0,-278); ctx.closePath();  ctx.stroke();  ctx.restore();  }//时针
            ctx.save();           ctx.lineWidth=3;                  ctx.strokeStyle="#0f0f0f";                ctx.translate(300,300);ctx.rotate(hour*PI/6+second*PI/108000);  ctx.beginPath();  ctx.moveTo(0,-238);ctx.lineTo(0,10);  ctx.closePath();  ctx.stroke();  ctx.restore();  //分针
            ctx.save();  ctx.lineWidth=3;  ctx.strokeStyle="#010101";  ctx.translate(300,300);  ctx.rotate(Minute*PI/30+second*PI/1800);  ctx.beginPath();  ctx.moveTo(0,-258);  ctx.lineTo(0,15);  ctx.closePath();  ctx.stroke();ctx.restore();  //秒针
            ctx.save();  ctx.strokeStyle="#ff100d";  ctx.lineWidth=3;  ctx.translate(300,300);               ctx.rotate(second*PI/30);
            ctx.beginPath();ctx.moveTo(0,-278);  ctx.lineTo(0,20);  ctx.closePath();  ctx.stroke();  ctx.beginPath();                        //时针分针秒针交点  ctx.arc(0,0,6,0,2*PI,false);ctx.closePath();                  ctx.fillStyle="#fff";ctx.fill();               ctx.stroke();     ctx.restore();  requestAnimationFrame(drawBig);            //实现动画修改的接口
        };drawBig();setInterval(drawBig,1000);                    //每1s重绘一次
    };return{canvasClock:_canvasClock,}
}())

本来准备封装一下的,要下班时来任务了,飞了....

转载于:https://www.cnblogs.com/sk-3/p/7002443.html

canvas 时钟动画相关推荐

  1. css3半空心圆_15个超强悍的CSS3圆盘时钟动画赏析

    本文作者html5tricks,转载请注明出处 在网页上,特别是个人博客中经常会用到时钟插件,一款个性化的时钟插件不仅可以让页面显得美观,而且可以让访客看到当前的日期和时间.今天我们给大家收集了15个 ...

  2. 14款形态各异的超时尚HTML5时钟动画

    14款超时尚的HTML5时钟动画(附源码)   时钟动画在网页应用中也非常广泛,在一些个人博客中,我们经常会看到一些相当个性化的HTML5时钟动画.今天我们向大家分享了14款形态各异的超时尚HTML5 ...

  3. 14款超时尚的HTML5时钟动画

    时钟动画在网页应用中也非常广泛,在一些个人博客中,我们经常会看到一些相当个性化的HTML5时钟动画.今天我们向大家分享了14款形态各异的超时尚HTML5时钟动画,其中有圆盘时钟.3D时钟.个性化时钟等 ...

  4. 网页版时钟动画效果 html模板

    即时时间展示,HTML模板,网页版时钟动画 首先看图:在线演示 然后看>>> <!doctype html> <html> <head> < ...

  5. html5时钟代码菜鸟课程,html5绘制时钟动画

    这篇文章主要介绍了html5绘制时钟动画,需要的朋友可以参考下 复制代码代码如下: var clock=document.getElementById("clock"); var ...

  6. canvas粒子动画

    2019独角兽企业重金招聘Python工程师标准>>> 周末在家玩了一下canvas粒子动画,先看看效果,用的图是我们微众银行的干爹'qq',先看看效果 ##1.获取图片信息 ### ...

  7. 教你实现一个朴实的Canvas时钟效果

    摘要:今天教大家写一个canvas的时钟案例,效果可能看起来比较简单,没有那些花里胡哨的. 本文分享自华为云社区<如何实现一个朴实无华的Canvas时钟效果>,作者: 北极光之夜.. 一. ...

  8. html5在线制作教程,HTML5 Canvas 制作动画

    HTML5 Canvas 制作动画 在HTML5 canvas中绘制图像动画效果,你需要绘制出每一帧的图像,然后在一个极短的时间内从一帧过渡到下一帧,形成动画效果. 在线示例 要在HTML5画布上绘制 ...

  9. Div层悬浮实现HTML5 Canvas背景动画

    在日常的学习中我接触到一些HTML5 Canvas动画,在开发 tiomg.org 太美在线工具网站 的时候,想将这些震撼或小清新的动画融合到工具网站中,这样可以使原本单调的网页看起来丰富和更有设计感 ...

最新文章

  1. 「协方差」与「相关系数」的概念
  2. 上机 文件读写器 c# 1614998685
  3. python日记(四)字典的常见用法
  4. 第八章应用安全工程备考要点及真题分布
  5. 国外的老师是怎么教Golang的?
  6. matlab tolx,Nelder-Mead算法matlab
  7. Ubuntu gedit中文乱码-转
  8. beeline-导出csv
  9. PHP设计模式——解释器模式
  10. 关于SAX,DOM,JAXP,JDOM,DOM4J的一些理解
  11. AliSQL编译安装
  12. 有没有可以帮忙lua解密一下的大概是这样一个压缩包
  13. matlab中pwm占空比计算代码,如何计算pwm波占空比
  14. 2021年中国道路交通事故情况分析(附机动车保有量、交通事故发生数量、死亡人数、受伤人数、直接经济损失)[图]
  15. android nat64,dpvs学习笔记: 18 nat64 的实现
  16. 微信公众平台开发(十二) 发送客服消息
  17. python之parser.add_argument()输入是什么!!
  18. android pdf转jpg格式,在Android中将图片转换为PDF
  19. windows下如何创建.xxx文件夹
  20. 基于cocos2dx的横版动作游戏制作(二)

热门文章

  1. 占星术合理吗?各个星座最喜欢用的表情是什么?
  2. Mybatis原理和SqlSession
  3. PTP校时模块(PTP时钟服务器)PTP授时服务器
  4. 怎样用一个DIV绘制熊猫头像
  5. TP框架如何开启log日志
  6. 字节跳动CEO炮轰HR , “按这要求我自己都进不来”
  7. 辅助工具,vptr、vtbl创建时机
  8. oracle年份超出范围,ora-00020超出最大进程数的解决方法
  9. 【转】matlab画地图,点线
  10. Spring 生命周期回调机制