首页前端开发HTMLcanvas的实例--时钟动画

canvas的实例--时钟动画

时间2024-01-22 22:01:11发布访客分类HTML浏览303
导读:收集整理的这篇文章主要介绍了canvas的实例--时钟动画,觉得挺不错的,现在分享给大家,也给大家做个参考。平时在公司不忙的时候,就喜欢写一些小效果什么的,一来复习复习,二来可以发现一些问题。 今天在群里看别人发了一手表的图片,卧槽...妥...
收集整理的这篇文章主要介绍了canvas的实例--时钟动画,觉得挺不错的,现在分享给大家,也给大家做个参考。平时在公司不忙的时候,就喜欢写一些小效果什么的,一来复习复习,二来可以发现一些问题。

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

直接上代码:

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?1.1.10">
    /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;
    i60;
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;
    i12;
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的实例--时钟动画的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

canvas动画时钟"

若转载请注明出处: canvas的实例--时钟动画
本文地址: https://pptw.com/jishu/583427.html
做web响应式设计(不用媒体查询)实例 HTML5的文本样式实例介绍

游客 回复需填写必要信息