admin 发表于 2022-1-30 21:50:07

js特效画布时钟代码分享

js特效画布时钟代码分享
看下代码运行效果图:


html代码如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
</head>
<body>
<div class="canvas"></div>javascript代码如下:
<script type="text/javascript" language="javascript">
window.onload=function () {
    // 创建画布
    var canvas=document.createElement('canvas');
    var brush=canvas.getContext("2d");
      canvas.style.border="2px solid #aaaaaa";
      canvas.width=700;
      canvas.height=700;

    // 包裹画布居中
    var box=document.createElement('div');
      // box样式
      box.style.width=canvas.width+"px";
      box.style.height=canvas.height+"px";
      box.style.margin="100px auto";

    // 移动块
    var move=document.createElement('span');
      // move样式
      move.style.color="#ff0000";
      move.style.position="absolute";
      move.style.display="none";
      move.style.boxShadow="1px 1px 8px red";

    // 添加对象
    document.body.appendChild(box);
    document.body.appendChild(move);
    box.appendChild(canvas);

      // 避免重复获取画布大小
      var x=canvas.offsetLeft;
      var y=canvas.offsetTop;
      move.style.display="none";

    function mymove (event) {
      move.style.display="block";
      move.style.left=event.clientX-50+"px";
      move.style.top=event.clientY-50+"px";
      move.innerHTML="当前画布坐标:"+(event.clientX-x-2)+","+(event.clientY-y-2);
    }

    function myout () {
            move.style.display="none";
    }

    canvas.onmousemove=mymove;
    canvas.onmouseout=myout;

// ---------------------------伞-------------------------------
         
//      var mycolor=["#FF0000","#FF7F00","#FFFF00","#00FF00","#00FFFF","#0000FF","#871F78"];
      var mycolor=["#8cc540","#009f5d","#019fa0","#019fde","#007cdc","#887ddd","#cd7bdd","#ff5675",
                              "#ff1244","#ff8345","#f8bd0b","#d1d2d4"];
      brush.translate(350,350);
      var i=0;
      function ful () {
                brush.save();
                brush.rotate(Math.PI/180*(360/12*i))
      // 伞帽子                     
      brush.beginPath();
      brush.fillStyle=mycolor;
      brush.arc(0,-290,40,0,Math.PI,true);
      brush.fill();
      // 伞柄
      brush.beginPath();
      brush.lineWidth=2;
      brush.lineCap="round";
      brush.strokeStyle=mycolor;
      brush.moveTo(0,-290);
      brush.lineTo(0,-240);
      brush.arc(-10,-240,10,0,Math.PI,false);
      brush.stroke();
                brush.restore();
                i++;
                if (i==mycolor.length) {
                        clearInterval(timer_ful);
                }
      }
      var timer_ful=setInterval(ful,500);
         
// ---------------------------时钟-------------------------------
         
         
      var grd=brush.createRadialGradient(0,0,1,0,0,12);
      var mydeg=Math.PI/180;
      function bell() {
                var mytime=new Date();//获取时间对象
                var h=mytime.getHours();//时钟
                var m=mytime.getMinutes();//分钟
                var s=mytime.getSeconds();//秒钟
//                console.log(h+":"+m+":"+s);
                h=h>12?h-12:h;//24小时制转换
               
                brush.clearRect(-180,-180,360,360);//清除
                brush.save();//保存环境
//                表盘
                brush.beginPath();
                brush.strokeStyle=mycolor;
                brush.lineWidth=10;
                brush.arc(0,0,170,0,Math.PI*2);
                brush.stroke();

//                刻度
                for (var i=0;i<60;i++) {      
                        brush.rotate(mydeg*6);
                        brush.beginPath();
                        brush.lineCap="round";
                        brush.lineWidth=5;
                        brush.moveTo(0,-165);
                        brush.lineTo(0,-155);
                        brush.stroke();      
                }
                for (var i=0;i<12;i++) {
                        brush.rotate(mydeg*30);
                        brush.beginPath();
                        brush.lineCap="round";
                        brush.lineWidth=10;
                        brush.moveTo(0,-165);
                        brush.lineTo(0,-145);
                        brush.stroke();
                }
                for (var i=0;i<12;i++) {
                        var myfont=i+1;
                        brush.rotate(mydeg*30);
                        brush.beginPath();
                        brush.fillStyle=mycolor;
                        brush.font="15px 楷体";
                        brush.fillText(myfont,-7,-120);
                }
//                时
                brush.save();
                brush.rotate(mydeg*h*30);
                brush.strokeStyle=mycolor;
                brush.lineWidth=6;
                brush.beginPath();
                brush.moveTo(0,20);
                brush.lineTo(0,-80);
                brush.stroke();
                brush.restore();
//                秒
                brush.save();
                brush.rotate(mydeg*s*6);
                brush.strokeStyle=mycolor;
                brush.lineWidth=3;
                brush.beginPath();
                brush.moveTo(0,20);
                brush.lineTo(0,-130);
                brush.stroke();
                brush.restore();
//                分
                brush.save();
                brush.rotate(mydeg*m*6);
                brush.strokeStyle=mycolor;
                brush.lineWidth=5;
                brush.beginPath();
                brush.moveTo(0,20);
                brush.lineTo(0,-100);
                brush.stroke();
                brush.restore();
//                表芯
                brush.beginPath();
                grd.addColorStop(0,"#ffffff");
            grd.addColorStop(1,"#ff0000");
                brush.fillStyle=grd;
                brush.arc(0,0,12,0,Math.PI*2);
                brush.fill();
      }
      bell();
         
      var timer_bell=setInterval(bell,1000);
         
         
         
}
</script>懒人附件下载:


页: [1]
查看完整版本: js特效画布时钟代码分享