< >

canvas_uhr-mit-border-als-zeit-anzeige.php


Quell Code


<iframe style="height:500px;width:80%" srcdoc="
<style>
body{
  margin: 0;
  padding: 0;
  background: #333;
}

canvas{
  position: absolute;
  top: -webkit-calc(50% - 250px);
  top: calc(50% - 250px);
  left: -webkit-calc(50% - 300px);
  left: calc(50% - 300px);
}

div{
  position: absolute;
  top: 5px;
  left: 5px;
  color: #fff;
  font-size: 40px;
  font-family: Arial;
}

span{
  position: absolute;
  bottom: 5px;
  left: 5px;
  color: #666;
  font-size: 13px;
  font-family: Arial;
}

span a{
  text-decoration: none;
  color: #0579f5;
}
h1{
font-size:23px;
color:white;
}
</style>

 <script src='https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js'></script>
<h1>Canvas Uhr</h1>
 <canvas></canvas>
 <script>
 var usr_color = 160;
window.requestAnimFrame = (function(){
  return  window.requestAnimationFrame || 
    window.webkitRequestAnimationFrame || 
    window.mozRequestAnimationFrame    || 
    window.oRequestAnimationFrame      || 
    window.msRequestAnimationFrame     ||  
    function( callback ){
    window.setTimeout(callback, 1000 / 60);
  };
})();
var canvas = document.getElementsByTagName('canvas')[0];
var ctx = canvas.getContext('2d');
var w = 600, h = 600;
canvas.width = w;
canvas.height = h;
var arcs = [];
function init(){
  console.log('init called');
  reset();
  arcs = [];
  var m = new arc();
  m.class = 'month';
  arcs.push(m);
  
  var d = new arc();
  d.class = 'date';
  d.r = 135;
  arcs.push(d);
  
  var d = new arc();
  d.class = 'day';
  d.r = 170;
  arcs.push(d);
  
  var h = new arc();
  h.class = 'hours';
  h.r = 205;
  arcs.push(h);
  
  var m = new arc();
  m.class = 'mins';
  m.r = 240;
  arcs.push(m);
  
  var s = new arc();
  s.class = 'secs';
  s.r = 275;
  arcs.push(s);
}

function arc(){
  this.class = 'month';
  this.r = 100;
  this.rot = 1;
  
  this.draw = function(){
    ctx.beginPath();
    ctx.arc(300,300,this.r,(Math.PI/(2/3)),this.rot,false);
    ctx.lineWidth = 30;
    ctx.strokeStyle = 'hsla('+(this.rot*(180/Math.PI)+usr_color)+',60%,50%,1)';
    ctx.stroke();
    
    ctx.save();
    ctx.fillStyle = '#333';
    ctx.translate(300, 300);
    ctx.rotate(this.rot);
    ctx.font='14px Arial Rounded MT Bold';
    if(this.class == 'secs'){
      var d = new Date();
      ctx.fillText(d.getSeconds(), 267, -5);
    }
    else if(this.class == 'mins'){
      var d = new Date();
      ctx.fillText(d.getMinutes(), 233, -5);
    }
    else if(this.class == 'hours'){
      var d = new Date();
      ctx.fillText(d.getHours(), 197, -5);
    }
    else if(this.class == 'day'){
      var d = new Date();
      var day = d.getDay();
      if(day == 1){
        var day = 'Mon';
      }
      else if(day == 2){
        var day = 'Tue'
      }
      else if(day == 3){
        var day = 'Wed'
      }
      else if(day == 4){
        var day = 'Thu'
      }
      else if(day == 5){
        var day = 'Fri'
      }
      else if(day == 6){
        var day = 'Sat'
      }
      else if(day == 7){
        var day = 'Sun'
      }
      ctx.fillText(day, 158, -5);
    }
    else if(this.class == 'date'){
      var d = new Date();
      ctx.fillText(d.getDate(), 127, -5);
    }
    else if(this.class == 'month'){
      var d = new Date();
      ctx.fillText(d.getMonth()+1, 97, -5);
    }
    ctx.restore();
  }
}

function reset(){
  ctx.fillStyle = '#333';
  ctx.fillRect(0,0,w,h);
}

function draw(){
  reset();
  ctx.fillStyle = 'rgba(255,255,255,0.5)';
  ctx.font = '12px Arial'
  ctx.fillText('seconds', 250, 27);
  ctx.fillText('minutes', 252, 63);
  ctx.fillText('hours', 264, 98);
  ctx.fillText('day', 274, 134);
  ctx.fillText('date', 270, 168);
  ctx.fillText('month', 260, 203);
  
  for(var i=0;i<arcs.length;i++){
    var a = arcs[i];
    var d = new Date();
    if(a.class == 'month'){
      var n = d.getMonth()+1;
      a.rot = (n/12)*(Math.PI*2) - (Math.PI/2);
    }
    else if(a.class == 'date'){
      var n = d.getDate();
      a.rot = (n/31)*(Math.PI*2) - (Math.PI/2);
    }
    else if(a.class == 'day'){
      var n = d.getDay();
      a.rot = (n/7)*(Math.PI*2) - (Math.PI/2);
    }
    else if(a.class == 'hours'){
      var n = d.getHours();
      var m = d.getMinutes();
      a.rot = ((n/12)*(Math.PI*2) - (Math.PI/2)) + ((m/3600)*(Math.PI*2));
    }
    else if(a.class == 'mins'){
      var n = d.getMinutes();
      var s = d.getSeconds();
      a.rot = ((n/60)*(Math.PI*2) - (Math.PI/2)) + ((s/3600)*(Math.PI*2));
    }
    else if(a.class == 'secs'){
      var n = d.getSeconds();
      var m = d.getMilliseconds();
      a.rot = ((n/60)*(Math.PI*2) - (Math.PI/2)) + ((m/60000)*(Math.PI*2));
    }
    a.draw();
  }
}
function animloop() {
  draw();
  requestAnimFrame(animloop); 
}
init();
animloop();
 </script>
"></iframe>

Add Comment

* Required information
1000
Powered by Commentics

Comments (1)

Gravatar
Admin
Sascha65says...

Die Canvas Balken Uhr ist ja mal Fett