zoukankan      html  css  js  c++  java
  • canvas 时钟

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>canvas-clock</title>
            
        </head>
        <body>
            <canvas id="myCanvas" class="canvas" width="150" height="150" style="border:1px solid #d3d3d3;margin: 0 auto;display: block;">
    
            </canvas>
            
            <script>
                var clock = function(){
                    var canvas = document.querySelector("#myCanvas");
                    if(canvas && canvas.getContext)
                    {
                        var cxt = canvas.getContext("2d");
                        cxt.save();//保存状态
                        cxt.clearRect(0,0,150,150);//清理画布
                        cxt.translate(75,75);//以(75,75)为原点
                        cxt.scale(0.5,0.5);//缩放
                        cxt.rotate(-Math.PI/2);//逆转90°
                        //=======================================
                        //表盘
                        cxt.beginPath();
                        cxt.lineWidth= 30;
                        var gld = cxt.createLinearGradient(0,0,50,75);
                        gld.addColorStop(0,"#e0e3ec");
                        gld.addColorStop(1,"#9aa0a0");
                        cxt.strokeStyle = gld;
                        var grd = cxt.createRadialGradient(0,0,0,0,0,150);
                        grd.addColorStop(0,"#ccc");
                        grd.addColorStop(1,"#ccc");
                        cxt.fillStyle = grd;
                        cxt.arc(0,0,135,0,Math.PI*2,true);
                        cxt.stroke();
                        cxt.fill();
        
                        cxt.strokeStyle = "#969696";
                        cxt.lineCap = "square";
                        cxt.save();
                        cxt.lineWidth = 8;
                        cxt.beginPath();
                        for (var i = 0;i<12;i++) {
                            cxt.rotate(Math.PI/6);
                            cxt.moveTo(100,0);
                            cxt.lineTo(120,0);
                            cxt.stroke();
                        }
                        cxt.restore();
                        
                        //分钟刻度
                        cxt.save();
                        cxt.lineWidth = 5;
                        for(i=0;i<60;i++){
                            if (i%5!=0) {
                                cxt.beginPath();
                                cxt.moveTo(132,0);
                                cxt.lineTo(120,0);
                                cxt.stroke();
                            }
                            cxt.rotate(Math.PI/30);
                        }
                        cxt.restore();
                        
                        var now = new Date();
                        var sec = now.getSeconds();
                        var min = now.getMinutes();
                        var hr = now.getHours();
                        hr= hr>12?hr-12:hr;
                        //时针
                        cxt.save();
                        cxt.rotate(hr*(Math.PI/6)+(Math.PI/360)*min + (Math.PI/21600)*sec);
                        cxt.lineWidth = 9;
                        cxt.beginPath();
                        cxt.moveTo(-20,0);
                        cxt.lineTo(70,0);
                        cxt.stroke();
                        cxt.restore();
                        //分针
                        cxt.save();
                        cxt.rotate((Math.PI/30)*min+(Math.PI/1800)*sec);
                        cxt.lineWidth = 6;
                        cxt.beginPath();
                        cxt.moveTo(-28,0);
                        cxt.lineTo(90,0);
                        cxt.stroke();
                        cxt.restore();
                        //秒针
                        cxt.save();
                        cxt.rotate((Math.PI/30)*sec);
                        cxt.lineWidth = 3;
                        cxt.beginPath();
                        cxt.moveTo(-30,0);
                        cxt.lineTo(120,0);
                        cxt.stroke();
                        cxt.restore();
                        
                        //中心点
                        cxt.beginPath();
                        cxt.fillStyle = "#969696";
                        cxt.arc(0,0,8,0,Math.PI*2,true);
                        cxt.fill();
                        
                        cxt.restore();
                    }
                }
                setInterval(clock,1000);
    
            </script>
        </body>
    </html>
  • 相关阅读:
    12.3
    团队项目第一阶段冲刺第一天
    4.22
    4.21 re重要功能
    12.1
    12.2
    4.17
    4.16
    css设置子元素相对于父元素保持位置不变(含有滚动条的父元素)
    git操作和npm操作清单
  • 原文地址:https://www.cnblogs.com/acyy/p/4396051.html
Copyright © 2011-2022 走看看