console
<html>
<body>
</body>
<script>
let canvas = document.createElement('canvas');
document.body.appendChild(canvas);
let width=200,height = 200;
canvas.width = width+40;
canvas.height = height+40;
let ctx = canvas.getContext('2d');
let r = width/2;
main(ctx);
setInterval(()=>{
canvas.width = canvas.width;
main(ctx);
},1000)
function main(ctx){
let now = new Date();
ctx.translate(canvas.width/2,canvas.height/2);
drawDial(ctx);
drawScale(ctx);
drawText(ctx);
ctx.shadowOffsetX = 5;
ctx.shadowOffsetY = 5;
ctx.shadowBlur = 10;
ctx.shadowColor = "black";
drawHourPointer(ctx,now.getHours(),now.getMinutes())
drawMinute(ctx,now.getMinutes());
drawSecond(ctx,now.getSeconds())
drawCirclePoint(ctx);
}
function drawDial(ctx){
ctx.save();
ctx.shadowOffsetX = 5;
ctx.shadowOffsetY = 10;
ctx.shadowBlur = 10;
ctx.shadowColor = "rgba(0,0,0,0.5)";
ctx.beginPath();
ctx.arc(0,0,r,0,2*Math.PI);
ctx.fillStyle='white';
ctx.fill();
ctx.restore();
ctx.save();
ctx.shadowOffsetX = 2;
ctx.shadowOffsetY = 4;
ctx.shadowBlur = 4;
ctx.shadowColor = "rgba(0,0,0,0.5)";
ctx.arc(0,0,r,0,2*Math.PI);
ctx.lineWidth = 5;
ctx.stroke();
ctx.restore();
}
function drawText(ctx){
let textR = r-22;
for(let i=1;i<13;i++){
ctx.font='14px blod arial'
ctx.textAlign='center'
ctx.textBaseline='middle';
var rad = (2 * Math.PI / 12 * i )-Math.PI / 2;
var x1 = Math.cos(rad) * textR;
var y1 = Math.sin(rad) * textR;
ctx.fillText(i,x1,y1);
}
}
function drawScale(ctx){
let textR = r-6;
for(let i=0;i<60;i++){
var rad = (2 * Math.PI / 60 * i );
var x1 = Math.cos(rad) * textR;
var y1 = Math.sin(rad) * textR;
ctx.beginPath()
if(i%5==0){
var x2 = Math.cos(rad) * (textR-6);
var y2 = Math.sin(rad) * (textR-6);
ctx.moveTo(x1,y1);
ctx.lineTo(x2,y2);
ctx.lineWidth = 2;
}else{
var x2 = Math.cos(rad) * (textR-4);
var y2 = Math.sin(rad) * (textR-4);
ctx.moveTo(x1,y1);
ctx.lineTo(x2,y2);
ctx.lineWidth = 1;
}
ctx.stroke();
}
}
function drawHourPointer(ctx,hour,minute){
ctx.save();
ctx.beginPath();
var rad = 2 * Math.PI / 12 * hour ;
var mrad = 2 * Math.PI / 12 / 60 * minute;
ctx.rotate(rad + mrad);
ctx.lineWidth = 6 ;
ctx.lineCap = "round";
ctx.moveTo(0,10);
ctx.lineTo(0,-r/2);
ctx.stroke();
ctx.restore();
}
function drawMinute(ctx,minute){
ctx.save();
ctx.beginPath();
var rad = 2 * Math.PI / 60 * minute ;
ctx.rotate(rad);
ctx.lineWidth = 3 ;
ctx.lineCap = "round";
ctx.moveTo(0,10);
ctx.lineTo( 0 , -r + 30);
ctx.stroke();
ctx.restore();
}
function drawSecond(ctx,second){
ctx.save();
ctx.beginPath();
ctx.strokeStyle = "red";
var rad = 2 * Math.PI / 60 * second ;
ctx.rotate(rad);
ctx.lineWidth = 2 ;
ctx.lineCap = "round";
ctx.moveTo(0,10);
ctx.lineTo( 0 , -r + 30);
ctx.stroke();
ctx.restore();
}
function drawCirclePoint(ctx){
ctx.beginPath();
ctx.fillStyle='white';
ctx.arc(0,0,5,0,2*Math.PI);
ctx.lineWidth = 1;
ctx.fill();
ctx.beginPath();
ctx.strokeStyle='black';
ctx.arc(0,0,5,0,2*Math.PI);
ctx.lineWidth = 1;
ctx.stroke();
}
</script>
</html>
canvas{
background-color: white;
}