Create an element which shows the left part of the bar (the round part), also create an element for the right part.
For the actual progress bar, create a third element with a repeating background and a width which depends on the actual progress.
Put it all on top of the background image (containing the empty progress bar).
But I suppose you already knew that...
Edit: When creating a progress bar which do not use textual backgrounds. You can use the border-radius to get the round effect, as shown by Rikudo Sennin and RoToRa!
<div class="meter">
<span style="width: 33%"></span>
<!-- I use my viewmodel in MVC to calculate the progress and then use @Model.progress to place it in my HTML with Razor -->
</div>
Why can't you just Create Multiple pictures for each part of the status bar?
If it's a third just show a third of the status bar... it's very simple. You could probably figure out how to change it to the next picture based of input with the form tag.
Here's my part of the code, you have to figure out the form stuff later
2014 answer: Since 2014 HTML now 5 includes a <progress> element that does not need JavaScript.
The percent value moves with the progress using inline content.
Tested only in webkit. Hope it helps:
If you wish to have a progress bar without adding some code PACE can be an awesome tool for you.
Just include pace.js and a CSS theme of your choice, and you get a beautiful progress indicator for your page load and AJAX navigation. Best thing with PACE is the auto detection of progress.
It contains various themes and color schemes as well.
There is a tutorial for creating an HTML5 progress bar here. If you don't want to use HTML5 methods or you are looking for an all-browser solution, try this code: