博客园自定义美化——博客园公告功能(公告栏圆形时钟)——博客园公告栏圆形时钟功能
博客园公告功能
1 // 博客侧边栏公告(支持HTML代码)(支持JS代码) 引入 2 // <script type="text/javascript" src="https://blog-static.cnblogs.com/files/ujq3/RoundClock.js"></script><!-- 圆形时钟 --> 3 var dom = document.getElementById('clock'); 4 var ctx = dom.getContext('2d'); 5 var width = ctx.canvas.width; 6 var height = ctx.canvas.height; 7 var r = width / 2; 8 //定义钟盘 9 function drawBackground(){ 10 ctx.save(); 11 ctx.translate(r, r); 12 ctx.beginPath(); 13 ctx.lineWidth = 10; 14 ctx.font ='18px Arial'; 15 ctx.textAlign = 'center' 16 ctx.textBaseline = 'middle' 17 ctx.arc(0, 0, r-5, 0, 2 * Math.PI, false); 18 ctx.stroke(); 19 var hourNumbers = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2]; 20 //遍历获取坐标 21 hourNumbers.forEach(function(number, i){ 22 var rad = 2 * Math.PI / 12 * i; 23 var x = Math.cos(rad) * (r - 30); 24 var y = Math.sin(rad) * (r - 30); 25 ctx.fillText(number, x ,y); 26 }) 27 28 //定义刻度 29 for(var i=0;i<60;i++){ 30 var rad = 2 * Math.PI / 60 * i; 31 var x = Math.cos(rad) * (r - 18); 32 var y = Math.sin(rad) * (r - 18); 33 ctx.beginPath(); 34 if(i % 5 == 0){ 35 ctx.arc(x, y, 2, 0, 2 * Math.PI, false); 36 ctx.fillStyle = '#000'; 37 }else{ 38 ctx.arc(x, y, 2, 0, 2 * Math.PI, false); 39 ctx.fillStyle = '#ccc'; 40 } 41 ctx.fill(); 42 } 43 44 } 45 46 //定义时钟 47 function drawHour(hour,minute){ 48 ctx.save(); 49 ctx.beginPath(); 50 var rad = 2 * Math.PI / 12 * hour; 51 var mrad = 2 * Math.PI / 12 / 60 * minute; 52 ctx.rotate(rad + mrad); 53 ctx.lineWidth = 6; 54 ctx.lineCap= 'round'; 55 ctx.moveTo(0 ,10); 56 ctx.lineTo(0 ,-r / 2); 57 ctx.stroke(); 58 ctx.restore(); 59 } 60 //定义分钟 61 function drawMinute(minute,second){ 62 ctx.save(); 63 ctx.beginPath(); 64 var rad = 2 * Math.PI / 60 * minute; 65 var srad = 2 * Math.PI / 60 /60 * second; 66 ctx.rotate(rad + srad); 67 ctx.lineWidth = 3; 68 ctx.lineCap= 'round'; 69 ctx.moveTo(0 ,10); 70 ctx.lineTo(0 ,-r + 18); 71 ctx.stroke(); 72 ctx.restore(); 73 } 74 //定义秒钟 75 function drawSecond(second){ 76 ctx.save(); 77 ctx.beginPath(); 78 var rad = 2 * Math.PI / 60 * second; 79 ctx.rotate(rad); 80 ctx.lineWidth = 3; 81 ctx.lineCap= 'round'; 82 ctx.moveTo(-2 ,20); 83 ctx.lineTo( 2, 20); 84 ctx.lineTo( 1, -r + 18); 85 ctx.lineTo( -1, -r + 18); 86 ctx.fillStyle = '#c14543'; 87 ctx.fill(); 88 ctx.restore(); 89 } 90 //定义钟盘圆点样式 91 function drawDot(){ 92 ctx.beginPath(); 93 ctx.fillStyle = '#fff'; 94 ctx.arc(0, 0, 3, 0, 2 * Math.PI, false); 95 ctx.fill(); 96 } 97 98 //时间函数 99 function draw(){ 100 ctx.clearRect(0, 0, width, height); 101 var now = new Date(); 102 var hour = now.getHours(); 103 var minute = now.getMinutes(); 104 var second = now.getSeconds(); 105 drawBackground(); 106 drawHour(hour,minute); 107 drawMinute(minute,second); 108 drawSecond(second); 109 drawDot(); 110 ctx.restore(); 111 } 112 setInterval(draw, 1000);
1 <!--{# 全部复制粘贴到 博客侧边栏公告(支持HTML代码)(支持JS代码) #}--> 2 <div class="clockdiv"><canvas id="clock" width ="200px" height="200px">您的浏览器不兼容canvas</canvas><div><!-- 圆形时钟 -->
您的资助是我最大的动力!
金额随意,欢迎来赏!
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的
因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【颜言】!