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

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

效果图,没有录制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. P2114 [NOI2014]起床困难综合症
  2. JavaScript封装一个注册函数解决兼容问题
  3. python工作招聘-学习Python 能找到工作?1300+条招聘信息告诉你答案
  4. C++ Primer 5th笔记(chap 14 重载运算和类型转换)输入和输出运算符
  5. 【国内首家!】阿里云专有云通过商用密码应用安全性评估
  6. 二叉树后序遍历的四种方法
  7. qtcreator4.4.1中cmake 与cmake3.5.1本身generate出来的setting是有区别的解决方法
  8. 解决UBUNTU NVIDIA驱动安装后循环登录问题:关闭UEFI Secure Boot选项
  9. 工科数学分析寒假预习day2 正项级数的敛散性
  10. 怎么在中国知网免费下载论文?
  11. 获取两个指定数之间的随机数(万能公式)
  12. 如何在 R 中找到卡方临界值
  13. Java关于大批量数据处理
  14. 5月16日第壹简报,星期一,农历四月十六
  15. char,varchar,nchar,nvarchar具体含义和区别
  16. 上海青少年算法竞赛-6月月赛参考代码
  17. PowerBI实用技巧:案例四(实现复杂动态矩阵TOPN and Others 排名分类)
  18. 全国ata计算机考试题目,ata计算机统考共十套模拟练习题.doc
  19. 阿里云服务器访问恶意域名_处理方法
  20. Java 七大设计原则 - 依赖倒置原则/面向接口编程

热门文章

  1. 微信开发者工具向gitee提交或者拉取代码报错push failed invalid authentication scheme
  2. ubuntu下VSCode的配置
  3. java map遍历顺序_深入理解HashMap遍历元素的顺序
  4. 制作庆祝元宵节html5,中国风的元宵节专题活动页面滚动模板
  5. 通过大数据技术能抓住暴打女孩嫌疑人吗?
  6. 一文带你快速初步了解云计算与大数据
  7. Vue.js 实战系列之实现视频类WebApp的项目开发——6. 首页视频详情实现
  8. mysql四舍五入函数取两位小数_MySQL四舍五入函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)
  9. 【鲁班猫】安装python3.9.12
  10. CSerialPort串口类最新修正版2018-06-21