HTML5 includes the progress
element, which is a special purpose status indicator. By default, it accepts a value between 0 and 1, and shows a familiar OS-flavored progress bar.
When you press the Go button below, the value is updated by a recursive JavaScript function until it reaches 1. I added the percentage indicator in that same script — it’s not a part of the progress
element itself.
A progress
element without a value shows the “barber pole” indeterminate progress indicator instead.
Naturally, this requires a modern browser: IE 10, Safari 6, Firefox 18, or a recent Chrome. You would need to substitute a fallback in older browsers; possibly just an animated GIF if you’re lazy like me.