Using jQuery / HTML5 to animate a circle

11,244

Solution 1

If you can use HTML5, canvas is probably your best bet. Mozilla has some decent tutorials on drawing arcs. This should be enough to get you started.

var canvas = document.getElementById('canvasid'),
    width = canvas.width,
    height = canvas.height,
    ctx = canvas.getContext('2d');

function drawTimer(deg) {
  var x = width / 2, // center x
      y = height / 2, // center y
      radius = 100,
      startAngle = 0,
      endAngle = deg * (Math.PI/180),
      counterClockwise = true;

  ctx.clearRect(0, 0, height, width);
  ctx.save();

  ctx.fillStyle = '#fe6';

  // Set circle orientation
  ctx.translate(x, y);
  ctx.rotate(-90 * Math.PI/180);

  ctx.beginPath();
  ctx.arc(0, 0, radius, startAngle, endAngle, counterClockwise);
  ctx.lineTo(0, 0);
  ctx.fill();
}

setInterval(function() {

  // Determine the amount of time elapsed; converted to degrees
  var deg = (elapsedTime / totalTime) * 360;

  drawTimer(deg);

}, 1000);

Solution 2

You can achieve this with CSS3 and jQuery.

Check out my example here http://blakek.us/css3-pie-graph-timer-with-jquery/ which with slight modification you could make the timer look how you want it.

Solution 3

In HTML5 you can draw in a canvas. For example:

// Create the yellow face
context.strokeStyle = "#000000";
context.fillStyle = "#FFFF00";
context.beginPath();
context.arc(100,100,50,0,Math.PI*2,true);
context.closePath();
context.stroke();
context.fill();

Link

Solution 4

You should really check out Processing!

Especially Processing.js. There have been some interesting things made with it for iPhone

Share:
11,244
BenM
Author by

BenM

Founder of Kolekto, the collection inventory app. Code monkey, historian and WW2 US militaria collector! Working generally with Symfony, RedBean and React. Dabble in Slim and other microframeworks.

Updated on August 11, 2022

Comments

  • BenM
    BenM over 1 year

    For a personal project, I'm tyring to make a timer application (for controlling Poker blind schedules). I know there are several solutions already on the market, but for reasons which are too lengthy to go into here, we need a bespoke system. Although the output template of the system will ultimately be definable by the end user, we would like to include a widget which shows a circle that gets animated as the time counts down. Here's an illustration of a working example, showing the yellow circle and what we'd like to achieve (or something similar, anyway):

    How to animate the circle?

    My question is, how would one code the animation as shown below using either jQuery or raw HTML5 / CSS3 animations? This is for a web application using jQuery, so there are no other library options I can use.

    Advanced thanks!

  • BenM
    BenM about 13 years
    Thanks, that's a great start!
  • Ila
    Ila almost 11 years
    Your pie graph timer with Jquery is exactly what I was looking for for a project, thank you so much for sharing it!
  • AbigailW
    AbigailW over 10 years
    Indeed! Excellent project, Kus! Going to get a lot of use out of this. Wish I had more points to mod this one up.