Progress

µProgress adds 11 color variants to the native <progress> element. It uses accent-color and vendor-specific pseudo-elements for cross-browser compatibility.

Usage

Apply a color class directly on a <progress> element to change the bar color. Without a color class, the default progress styling applies.

75%
<progress class="progress-primary" value="75" max="100">75%</progress>

The text content inside <progress> serves as a fallback for browsers that do not support the element.

Color variants

11 color classes are available, matching the µCSS color roles:

<label>Primary (75%)
    <progress class="progress-primary" value="75" max="100">75%</progress>
</label>
<label>Secondary (60%)
    <progress class="progress-secondary" value="60" max="100">60%</progress>
</label>
<label>Tertiary (45%)
    <progress class="progress-tertiary" value="45" max="100">45%</progress>
</label>
<label>Contrast (90%)
    <progress class="progress-contrast" value="90" max="100">90%</progress>
</label>
<label>Spark (40%)
    <progress class="progress-spark" value="40" max="100">40%</progress>
</label>
<label>Accent (70%)
    <progress class="progress-accent" value="70" max="100">70%</progress>
</label>
<label>Pop (55%)
    <progress class="progress-pop" value="55" max="100">55%</progress>
</label>
<label>Success (80%)
    <progress class="progress-success" value="80" max="100">80%</progress>
</label>
<label>Info (50%)
    <progress class="progress-info" value="50" max="100">50%</progress>
</label>
<label>Warning (35%)
    <progress class="progress-warning" value="35" max="100">35%</progress>
</label>
<label>Error (20%)
    <progress class="progress-error" value="20" max="100">20%</progress>
</label>
Class Color variable
.progress-primary--mu-primary
.progress-secondary--mu-secondary
.progress-tertiary--mu-tertiary
.progress-contrast--mu-contrast
.progress-spark--mu-spark
.progress-accent--mu-accent
.progress-pop--mu-pop
.progress-success--mu-success
.progress-info--mu-info
.progress-warning--mu-warning
.progress-error--mu-error

Various values

The value attribute controls the fill level. Set max to define the scale (typically 100).

0% 25% 50% 100%
<progress class="progress-primary" value="0" max="100">0%</progress>
<progress class="progress-success" value="25" max="100">25%</progress>
<progress class="progress-info" value="50" max="100">50%</progress>
<progress class="progress-primary" value="100" max="100">100%</progress>

Indeterminate

Omit the value attribute to create an indeterminate progress bar (animated loading indicator):

Loading...
<progress class="progress-primary">Loading...</progress>

Cross-browser implementation

Each color variant sets three properties for full browser support:

Property Target
accent-colorModern browsers
::-webkit-progress-valueChrome, Safari
::-moz-progress-barFirefox

CSS classes reference

Class Description
.progress-primaryPrimary color progress bar
.progress-secondarySecondary color progress bar
.progress-tertiaryTertiary color progress bar
.progress-contrastContrast color progress bar
.progress-sparkSpark (lighter contrast) progress bar
.progress-accentAccent color progress bar
.progress-popPop (lighter accent) progress bar
.progress-successSuccess (green) progress bar
.progress-infoInfo (blue) progress bar
.progress-warningWarning (orange/yellow) progress bar
.progress-errorError (red) progress bar

Accessibility

  • The <progress> element is natively accessible and announced by screen readers.
  • Include fallback text content inside the element (e.g., 75%) for older browsers.
  • Wrap progress bars inside <label> elements to provide descriptive context.

See also: Loading · Spinner