Please note, this is a STATIC archive of website www.w3schools.com from 05 May 2020, cach3.com does not collect or store any user information, there is no "phishing" involved.
THE WORLD'S LARGEST WEB DEVELOPER SITE

Canvas Clock Face


Part II - Draw a Clock Face

The clock needs a clock face. Create a JavaScript function to draw a clock face:

JavaScript:

function drawClock() {
  drawFace(ctx, radius);
}

function drawFace(ctx, radius) {
  var grad;

  ctx.beginPath();
  ctx.arc(0, 0, radius, 0, 2 * Math.PI);
  ctx.fillStyle = 'white';
  ctx.fill();

  grad = ctx.createRadialGradient(0, 0 ,radius * 0.95, 0, 0, radius * 1.05);
  grad.addColorStop(0, '#333');
  grad.addColorStop(0.5, 'white');
  grad.addColorStop(1, '#333');
  ctx.strokeStyle = grad;
  ctx.lineWidth = radius*0.1;
  ctx.stroke();

  ctx.beginPath();
  ctx.arc(0, 0, radius * 0.1, 0, 2 * Math.PI);
  ctx.fillStyle = '#333';
  ctx.fill();
}
Try it Yourself »


Code Explained

Create a drawFace() function for drawing the clock face:

function drawClock() {
  drawFace(ctx, radius);
}

function drawFace(ctx, radius) {
}

Draw the white circle:

ctx.beginPath();
ctx.arc(0, 0, radius, 0, 2 * Math.PI);
ctx.fillStyle = 'white';
ctx.fill();

Create a radial gradient (95% and 105% of original clock radius):

grad = ctx.createRadialGradient(0, 0, radius * 0.95, 0, 0, radius * 1.05);

Create 3 color stops, corresponding with the inner, middle, and outer edge of the arc:

grad.addColorStop(0, '#333');
grad.addColorStop(0.5, 'white');
grad.addColorStop(1, '#333');

The color stops create a 3D effect.

Define the gradient as the stroke style of the drawing object:

ctx.strokeStyle = grad;

Define the line width of the drawing object (10% of radius):

ctx.lineWidth = radius * 0.1;

Draw the circle:

ctx.stroke();

Draw the clock center:

ctx.beginPath();
ctx.arc(0, 0, radius * 0.1, 0, 2 * Math.PI);
ctx.fillStyle = '#333';
ctx.fill();