zoukankan      html  css  js  c++  java
  • 博客园自定义美化——博客园公告功能(公告栏圆形时钟)——博客园公告栏圆形时钟功能

    博客园公告功能


      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);
    RoundClock.js
    1 <!--{#  全部复制粘贴到  博客侧边栏公告(支持HTML代码)(支持JS代码)  #}-->
    2 <div class="clockdiv"><canvas id="clock" width ="200px" height="200px">您的浏览器不兼容canvas</canvas><div><!-- 圆形时钟 -->
    RoundClock.html
  • 相关阅读:
    poj 1236 Network of Schools 强连通分量 (添加几条边可以使整个图变成强连通图)
    poj 2363 Sightseeing ( 找次短路和最短路的条数 )
    poj 3013
    poj 1679 The Unique MST 最小生成树
    poj 1797 Heavy Transportation (spfa 最短路 )
    hdu 2680 Choose the best route (spfa)
    畅通工程续
    find the longest of the shortest
    SimpleDateFormate的使用
    SimpleDateFormate的使用
  • 原文地址:https://www.cnblogs.com/ujq3/p/9714131.html
Copyright © 2011-2022 走看看