canvas的实例–时钟动画

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

 

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

 

直接上代码:

 

html

 

canvas clockclock.canvasClock();

登录后复制

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,    }}())

登录后复制

 

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

 

以上就是canvas的实例–时钟动画的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2910971.html

(0)
上一篇 2025年3月11日 04:38:52
下一篇 2025年3月11日 04:38:58

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Canvas学习系列一:初识canvas

    最近你开始在学习canvas,打算把学习canvas的整个学习过程当中的一些笔记与总结记录下来,如有什么不足之处还请大神们多多指出。   1. canvas介绍 Canvas元素的出现,可以说开启的Web世界绘制动画,图形的大门,其功能非常…

    2025年3月11日
    200
  • 使用canvas设计出一个简易的画板

    前面讲了一部分的canvasapi的基础知识,光看api的介绍确实是很无趣乏味,需要一点可以激发内心的激情的东西来激励自己来学习,于是就了伴随canvasapi学习的小实例,这样通过api的知识,结合小实例的应用,就可以更好的去理解canv…

    2025年3月11日
    200
  • 圆弧和扇形的加载动画该怎么写?

    0.静态效果图 1.画弧度的代码 width: 3em;height: 3em;border: 7px transparent solid;border-left: 7px #4DB6AC solid;border-radius: 50%;…

    2025年3月11日 编程技术
    200
  • 怎么使用Canvas绘制虚线

    上一章节我们说到,线性路径的绘制,主要利用movoto(),lineto()等方法,当然 canvas 2d api 也提供了虚线的绘制方法,canvasrenderingcontext2d.setlinedash(); 下面我们就来看看虚…

    2025年3月11日 编程技术
    200
  • 高德地图+canvas画图结合实现一个小项目

      之前朋友委托有个创业项目,想让我帮忙,正好那段时间有点闲,半推半就中就答应下来了。   入了团队才发现,该项目前后端分离,后端工程师已就位主要实现接口,IOS端工程师也已就位,还差一个web前端工程师。背脊一凉,我之前虽然写过一些js和…

    2025年3月11日 编程技术
    200
  • HTML5 canvas学习的实例介绍

    1.html5中的canvas标签的创建 window.onload = function(){ createCanvas(); } function createCanvas(){ var canvas_width= 200, canva…

    编程技术 2025年3月11日
    200
  • ngAnimate插件是做什么的?

    ngAnimate插件是做什么的? nganimate插件如其名字一样是为元素提供动画的。 怎么定义动画? 第一步必须是引入插件 登录后复制   第二步让app引入(依赖)这个插件 登录后复制登录后复制登录后复制 var appH5=ang…

    编程技术 2025年3月11日
    200
  • 分享一个用canvas合成海报图片的移动端项目

      最近做了一个用canvas合成海报图片的移动端项目,由于一点canvas基础都没有,所以去网上搜了一位前辈的demo,但是开发过程中遇到了很多问题,现将所遇问题及解决方法总结如下:   1、移动端canvas项目适配全屏问题   问题描…

    2025年3月11日
    200
  • canvas中线段的端点与连接点详解

            在canvas中,线段也是路径中的一种,被称之为线性路径。在canvas中绘制线性路径主要用到moveto(x,y)、lineto(x,y)和stroke()几个方法,让我们来回忆下线宽的用法。 function drawL…

    2025年3月11日 编程技术
    200
  • canvas基础的学习

    canvas(画布)是html5新增的标签元素,用来定义图形,比如图表和其他图像。标签只是图形容器,必须使用脚本(通常为javascript)来绘制图形。 canvas与svg的区别   canvas是HTML5提供的新元素,而svg存在的…

    2025年3月11日 编程技术
    200

发表回复

登录后才能评论