• 利用js+canvas实现的时钟效果图


    canvas+js时钟特效

    运用js+canvas方面的知识完成一个时钟的效果图,再利用for循环实现指针的转动效果:

    <!--网页文档的声明-->
    <!doctype html>
    <html>
    <!--网页的头部-->
     <head>
      <meta charset="UTF-8">
      <!--网页三要素-->
      <meta name="Keywords" content="关键词">
      <meta name="Description" content="关键词描述">
      <title>时钟效果</title>
      <!--CSS层叠样式表   加工 修饰-->
      <style type="text/css">
        *{margin:0;padding:0;}
        body{background:url("img/2.jpg");}
        #canvas{margin:100px auto;display:block;}
      </style>
     </head>
     <!--网页的主体-->
     <body>
        <canvas id="canvas" width="500" height="500">
            你的浏览器需要更新了更新请前往 www.xxx.com*——*
        </canvas>
        <script type="text/javascript">
            var canvas = document.getElementById('canvas');//获取上下文
            var cxt = canvas.getContext('2d');//绘图轨迹  线  圆 矩形..
            /*圆
            cxt.beginPath();//开始
            //cxt.fillStyle = "#006633";填充颜色
            cxt.strokeStyle = "#ff00ff";
            cxt.arc(250,250,200,0,360,false);//画圆方法
            //cxt.fill();填充
            cxt.stroke();
            cxt.closePath();//结束
            */
            clock()
            function clock(){
                cxt.clearRect(0,0,500,500)
                var now = new Date();
                var sec = now.getSeconds();
                var min = now.getMinutes();
                var hour = now.getHours();
                    hour = hour + min/60;
                    hours = hour>12?hour-12:hour;
                //表盘
                cxt.beginPath();
                cxt.lineWidth =10;//线宽
                cxt.strokeStyle = "#00ccff";
                cxt.arc(250,250,200,0,360,false);
                cxt.stroke();
                cxt.closePath();
                //分秒刻度 60个
                for (var i=0;i<60 ;i++ )
                {
                    cxt.save();
                    cxt.translate(250,250);
                    cxt.rotate(6*i*Math.PI/180);
                    cxt.lineWidth = "7";
                    cxt.strokeStyle ="#fff";
                    cxt.beginPath();
                    cxt.moveTo(0,-180);
                    cxt.lineTo(0,-190);
                    cxt.stroke();
                    cxt.closePath();
                    cxt.restore();
                }
                //时刻度
                for (var i =0;i<12 ;i++ )
                {
                    cxt.save();
                    cxt.translate(250,250);
                    cxt.rotate(30*i*Math.PI/180);
                    cxt.lineWidth = "7";
                    cxt.strokeStyle ="#ff0000";
                    cxt.beginPath();
                    cxt.moveTo(0,-175);
                    cxt.lineTo(0,-195);
                    cxt.stroke();
                    cxt.closePath();
                    cxt.restore();
                }
                //时针
                cxt.save();//保存
                cxt.strokeStyle = "yellow"
                cxt.translate(250,250);
                cxt.rotate(30*hours*Math.PI/180);
                cxt.beginPath();
                cxt.moveTo(0,-100);
                cxt.lineTo(0,20);
                cxt.stroke();
                cxt.closePath();
                cxt.restore();
                //分针
                cxt.save();//保存
                cxt.strokeStyle = "#00ff00";
                cxt.lineWidth ="7";
                cxt.translate(250,250);
                cxt.rotate(6*min*Math.PI/180);
                cxt.beginPath();
                cxt.moveTo(0,-130);
                cxt.lineTo(0,20);
                cxt.stroke();
                cxt.closePath();
                cxt.restore();
                //秒针
                cxt.save();
                cxt.strokeStyle = "red";
                cxt.lineWidth ="3";
                cxt.translate(250,250);
                cxt.rotate(6*sec*Math.PI/180);
                cxt.beginPath();
                cxt.moveTo(0,-150);
                cxt.lineTo(0,20);
                cxt.stroke();
                cxt.closePath();
                cxt.beginPath();
                cxt.fillStyle ="gray";
                cxt.arc(0,0,5,0,360,false);
                cxt.fill();
                cxt.beginPath();
                cxt.strokeStyle ="red";
                cxt.arc(0,0,6,0,360,false);
                cxt.stroke();
                cxt.beginPath();
                cxt.lineWidth ="1";
                cxt.strokeStyle ="red";
                cxt.moveTo(0,-150);
                cxt.lineTo(4,-130);
                cxt.stroke();
                cxt.beginPath();
                cxt.lineWidth ="1";
                cxt.strokeStyle ="red";
                cxt.moveTo(0,-150);
                cxt.lineTo(-4,-130);
                cxt.stroke();
                
                
                cxt.restore();
            }
            setInterval(clock,1000)
            
            //console.log(hour+'时'+min+'分'+sec+'秒')
        </script>
     </body>
    </html>
  • 相关阅读:
    数据量过大时数据库操作的处理
    VC中回调函数的用法
    基于BindingSource的WinForm开发
    VC获取各类指针
    GetSystemMetrics()函数的用法
    samba建立个人专享网盘
    Windows 7下用Windows照片查看器打开图片速度变慢的解决方案
    这是一个模板
    QT中编译和使用OPENCV
    MFC日志(2011.4.9)
  • 原文地址:https://www.cnblogs.com/duzheqiang/p/5734674.html
Copyright © 2020-2023  润新知