JSFiddle - React, Tailwind, and code Playground
HTML
<body>
Черновик по JavaScript. Работа с холстом: <br>
<div id='clock'>Тут будет текущее время</div> <br>
<canvas height='480' width='480' id='myCanvas'></canvas>
</body>
CSS
#clock{
font-family:Tahoma, sans-serif;
font-size:20px;
font-weight:bold;
color:#0000cc;
}
JavaScript
function displayCanvas(){
var canvasHTML = document.getElementById('myCanvas');
var contextHTML = canvasHTML.getContext('2d');
contextHTML.strokeRect(0,0,canvasHTML.width, canvasHTML.height);
//Расчет координат центра и радиуса часов
var radiusClock = canvasHTML.width/2 - 10;
var xCenterClock = canvasHTML.width/2;
var yCenterClock = canvasHTML.height/2;
//Очистка экрана.
contextHTML.fillStyle = "#ffffff";
contextHTML.fillRect(0,0,canvasHTML.width,canvasHTML.height);
//Рисуем контур часов
contextHTML.strokeStyle = "#000000";
contextHTML.lineWidth = 1;
contextHTML.beginPath();
contextHTML.arc(xCenterClock, yCenterClock, radiusClock, 0, 2*Math.PI, true);
contextHTML.moveTo(xCenterClock, yCenterClock);
contextHTML.stroke();
contextHTML.closePath();
//Рисуем рисочки часов
var radiusNum = radiusClock - 10; //Радиус расположения рисочек
var radiusPoint;
for(var tm = 0; tm < 60; tm++){
contextHTML.beginPath();
if(tm % 5 == 0){radiusPoint = 5;}else{radiusPoint = 2;} //для выделения часовых рисочек
var xPointM = xCenterClock + radiusNum * Math.cos(-6*tm*(Math.PI/180) + Math.PI/2);
var yPointM = yCenterClock - radiusNum * Math.sin(-6*tm*(Math.PI/180) + Math.PI/2);
contextHTML.arc(xPointM, yPointM, radiusPoint, 0, 2*Math.PI, true);
contextHTML.stroke();
contextHTML.closePath();
}
//Оцифровка циферблата часов
for(var th = 1; th <= 12; th++){
contextHTML.beginPath();
contextHTML.font = 'bold 25px sans-serif';
var xText = xCenterClock + (radiusNum - 30) * Math.cos(-30*th*(Math.PI/180) + Math.PI/2);
var yText = yCenterClock - (radiusNum - 30) * Math.sin(-30*th*(Math.PI/180) + Math.PI/2);
if(th <= 9){
contextHTML.strokeText(th, xText - 5 , yText + 10);
}else{
contextHTML.strokeText(th, xText - 15 , yText + 10);
}
contextHTML.stroke();
contextHTML.closePath();
}
//Рисуем стрелки
var lengthSeconds = radiusNum - 10;
...