深圳市金黑网络技术有限公司始终坚持以用户需求为导向,提供安全、稳定、高效的产品和服务!
签到 · 搜索导航 · 服务热线 · 微信/手机:17817817816

深圳网站建设

查看: 1121|回复: 0

js特效画布时钟代码分享

[复制链接]

UID
1
贡献
844
金币
1540
主题
520
在线时间
333 小时
注册时间
2022-1-15
最后登录
2024-11-12
QQ
发表于 2022-1-30 21:50:07 | 1121 | 0 | 显示全部楼层 |阅读模式
js特效画布时钟代码分享
看下代码运行效果图:

js特效画布时钟代码分享

js特效画布时钟代码分享


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

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

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

  22.     // 添加对象
  23.     document.body.appendChild(box);
  24.     document.body.appendChild(move);
  25.     box.appendChild(canvas);

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

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

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

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

  41. // ---------------------------伞-------------------------------
  42.          
  43. //        var mycolor=["#FF0000","#FF7F00","#FFFF00","#00FF00","#00FFFF","#0000FF","#871F78"];
  44.         var mycolor=["#8cc540","#009f5d","#019fa0","#019fde","#007cdc","#887ddd","#cd7bdd","#ff5675",
  45.                                 "#ff1244","#ff8345","#f8bd0b","#d1d2d4"];
  46.         brush.translate(350,350);
  47.         var i=0;
  48.         function ful () {
  49.                 brush.save();
  50.                 brush.rotate(Math.PI/180*(360/12*i))
  51.         // 伞帽子                     
  52.         brush.beginPath();
  53.         brush.fillStyle=mycolor[i];
  54.         brush.arc(0,-290,40,0,Math.PI,true);
  55.         brush.fill();
  56.         // 伞柄
  57.         brush.beginPath();
  58.         brush.lineWidth=2;
  59.         brush.lineCap="round";
  60.         brush.strokeStyle=mycolor[i];
  61.         brush.moveTo(0,-290);
  62.         brush.lineTo(0,-240);
  63.         brush.arc(-10,-240,10,0,Math.PI,false);
  64.         brush.stroke();
  65.                 brush.restore();
  66.                 i++;
  67.                 if (i==mycolor.length) {
  68.                         clearInterval(timer_ful);
  69.                 }
  70.         }
  71.         var timer_ful=setInterval(ful,500);
  72.          
  73. // ---------------------------时钟-------------------------------
  74.          
  75.          
  76.         var grd=brush.createRadialGradient(0,0,1,0,0,12);
  77.         var mydeg=Math.PI/180;
  78.         function bell() {
  79.                 var mytime=new Date();//获取时间对象
  80.                 var h=mytime.getHours();//时钟
  81.                 var m=mytime.getMinutes();//分钟
  82.                 var s=mytime.getSeconds();//秒钟
  83. //                console.log(h+":"+m+":"+s);
  84.                 h=h>12?h-12:h;//24小时制转换
  85.                  
  86.                 brush.clearRect(-180,-180,360,360);//清除
  87.                 brush.save();//保存环境
  88. //                表盘
  89.                 brush.beginPath();
  90.                 brush.strokeStyle=mycolor[parseInt(s/5)];
  91.                 brush.lineWidth=10;
  92.                 brush.arc(0,0,170,0,Math.PI*2);
  93.                 brush.stroke();

  94. //                刻度
  95.                 for (var i=0;i<60;i++) {        
  96.                         brush.rotate(mydeg*6);
  97.                         brush.beginPath();
  98.                         brush.lineCap="round";
  99.                         brush.lineWidth=5;
  100.                         brush.moveTo(0,-165);
  101.                         brush.lineTo(0,-155);
  102.                         brush.stroke();        
  103.                 }
  104.                 for (var i=0;i<12;i++) {
  105.                         brush.rotate(mydeg*30);
  106.                         brush.beginPath();
  107.                         brush.lineCap="round";
  108.                         brush.lineWidth=10;
  109.                         brush.moveTo(0,-165);
  110.                         brush.lineTo(0,-145);
  111.                         brush.stroke();
  112.                 }
  113.                 for (var i=0;i<12;i++) {
  114.                         var myfont=i+1;
  115.                         brush.rotate(mydeg*30);
  116.                         brush.beginPath();
  117.                         brush.fillStyle=mycolor[i];
  118.                         brush.font="15px 楷体";
  119.                         brush.fillText(myfont,-7,-120);
  120.                 }
  121. //                时
  122.                 brush.save();
  123.                 brush.rotate(mydeg*h*30);
  124.                 brush.strokeStyle=mycolor[h];
  125.                 brush.lineWidth=6;
  126.                 brush.beginPath();
  127.                 brush.moveTo(0,20);
  128.                 brush.lineTo(0,-80);
  129.                 brush.stroke();
  130.                 brush.restore();
  131. //                秒
  132.                 brush.save();
  133.                 brush.rotate(mydeg*s*6);
  134.                 brush.strokeStyle=mycolor[parseInt(s/5)];
  135.                 brush.lineWidth=3;
  136.                 brush.beginPath();
  137.                 brush.moveTo(0,20);
  138.                 brush.lineTo(0,-130);
  139.                 brush.stroke();
  140.                 brush.restore();
  141. //                分
  142.                 brush.save();
  143.                 brush.rotate(mydeg*m*6);
  144.                 brush.strokeStyle=mycolor[parseInt(m/5)];
  145.                 brush.lineWidth=5;
  146.                 brush.beginPath();
  147.                 brush.moveTo(0,20);
  148.                 brush.lineTo(0,-100);
  149.                 brush.stroke();
  150.                 brush.restore();
  151. //                表芯
  152.                 brush.beginPath();
  153.                 grd.addColorStop(0,"#ffffff");
  154.             grd.addColorStop(1,"#ff0000");
  155.                 brush.fillStyle=grd;
  156.                 brush.arc(0,0,12,0,Math.PI*2);
  157.                 brush.fill();
  158.         }
  159.         bell();
  160.          
  161.         var timer_bell=setInterval(bell,1000);
  162.          
  163.          
  164.          
  165. }
  166. </script>
复制代码
懒人附件下载:
1.zip (1.85 KB, 下载次数: 83)

楼主热帖

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

快速回复 返回顶部 返回列表