Miracle 发表于 2018-12-16 01:45:37

Canvas荧光表源码分享


无聊看了一下网页制作从入门到放弃的书,看到一个canvas表盘案例觉得不错,就搞出来美化了一下,就是这个鸟样子

<!DOCTYPE html>
<html>
<head>
        <meta charset="utf-8">
        <title>canvas钟表</title>
        <meta name="Keywords" content="canvas钟表">
        <meta name="author" content="Youngxj">
        <style type="text/css">
        body{margin:0;}
</style>
</head>
<body>
        <canvas id="canvas" width=320 height=320 >如果你看到这段文字,说明你的浏览器弱爆了!</canvas>
        <script>
                window.onload=draw;
                function draw() {
                        var canvas=document.getElementById('canvas');
                        var context=canvas.getContext('2d');
                        context.save();
                        //改变表盘中心位置
                        context.translate(160,160);
                        var deg=2*Math.PI/12;
                        context.save();
                        context.beginPath();
                        for(var i=0;i<13;i++){
                                var x=Math.sin(i*deg);
                                var y=-Math.cos(i*deg);
                                context.lineTo(x*160,y*160);
                        }
                        var c=context.createRadialGradient(0,0,0,0,0,130);
                        //改变表盘背景颜色(可渐变)
                        c.addColorStop(0,"#000000");
                        c.addColorStop(1,"#000000")
                        context.fillStyle=c;
                        context.fill();
                        context.closePath();
                        context.restore();

                        context.save();
                        context.beginPath();
                        for(var i=1;i<13;i++){
                                var x1=Math.sin(i*deg);
                                var y1=-Math.cos(i*deg);
                                context.fillStyle="green";
                                context.font="bold 20px Calibri";
                                context.textAlign='center';
                                context.textBaseline='middle';
                                context.fillText(i,x1*120,y1*120);
                        }
                        context.closePath();
                        context.restore();

                        context.save();
                        context.beginPath();
                        for(var i=0;i<12;i++){
                                var x2=Math.sin(i*deg);
                                var y2=-Math.cos(i*deg);
                                context.moveTo(x2*148,y2*148);
                                context.lineTo(x2*135,y2*135);
                        }
                        context.strokeStyle='green';
                        context.lineWidth=4;
                        context.stroke();
                        context.closePath();
                        context.restore();

                        context.save();
                        var deg1=2*Math.PI/60;
                        context.beginPath();
                        for(var i=0;i<60;i++){
                                var x2=Math.sin(i*deg1);
                                var y2=-Math.cos(i*deg1);
                                context.moveTo(x2*146,y2*146);
                                context.lineTo(x2*140,y2*140);
                        }
                        context.strokeStyle='green';
                        context.lineWidth=2;
                        context.stroke();
                        context.closePath();
                        context.restore();

                        context.save();
                        // 表盘文字颜色、字体大小等
                        context.strokeStyle="green";
                        context.font=' 13px sans-serif';
                        context.textAlign='center';
                        context.textBaseline='middle';
                        // 改变表盘中间文字内容
                        context.strokeText(getwork(),0,45);
                        context.strokeText(startTime(),0,65);
                        context.strokeText(nyr(),0,85);
                        context.restore();

                        var time=new Date();
                        var h=(time.getHours()%12)*2*Math.PI/12;
                        var m=time.getMinutes()*2*Math.PI/60;
                        var s=time.getSeconds()*2*Math.PI/60;
                        context.save();
                        context.rotate( h + m/12 + s/720) ;
                        context.beginPath();
                        context.moveTo(0,6);
                        context.lineTo(0,-85);
                        context.strokeStyle="green";
                        context.lineWidth=6;
                        context.stroke();
                        context.closePath();
                        context.restore();

                        context.save();
                        context.rotate( m+s/60 ) ;
                        context.beginPath();
                        context.moveTo(0,8);
                        context.lineTo(0,-105);
                        context.strokeStyle="green";
                        context.lineWidth=4;
                        context.stroke();
                        context.closePath();
                        context.restore();

                        context.save();
                        context.rotate( s ) ;
                        context.beginPath();
                        context.moveTo(0,10);
                        context.lineTo(0,-120);
                        context.strokeStyle="green";
                        context.lineWidth=2;
                        context.stroke();
                        context.closePath();
                        context.restore();
                        context.restore();
                        setTimeout(draw, 1000);
                }
                // 当前时间
                function startTime(){
                        var today=new Date();
                        var h=today.getHours();
                        var m=today.getMinutes();
                        var s=today.getSeconds();
                        m=checkTime(m);
                        s=checkTime(s);
                        return h+":"+m+":"+s;
                        t=setTimeout(function(){startTime()},500);
                }
                function checkTime(i){
                        if (i<10){
                                i="0" + i;
                        }
                        return i;
                }
                // 当前星期
                function getwork(){
                        var l = ["日","一","二","三","四","五","六"];
                        var d = new Date().getDay();
                        var str = '星期'+l;
                        return str;
                }
                // 当前年月日
                function nyr(){
                        var myDate = new Date();
                        return myDate.toLocaleDateString();

                }
        </script>
</body>
</html>
页: [1]
查看完整版本: Canvas荧光表源码分享