Progress and Status Indicators
Canvas includes a small set of legacy UI components that can be used to show progress, status, or key information. These patterns rely on older Canvas JavaScript enhancements (for example, pill and ui-progressbar) rather than modern HTML elements such as <progress>. They are supported within course content but may not behave consistently across all browsers.
Where possible, this page also shows inline-style alternatives that do not depend on Canvas' legacy classes and are closer to modern accessibility practice.
Useful references
Pill-style status indicators (Canvas class)
The pill class is a legacy Canvas pattern that creates a horizontal list of compact status indicators. This is useful for presenting summary information about an activity, such as its weighting, rules, or points.
Example assignment settings:
- 30% of module mark
- 2 late submission rules
- 10 points total
<p>Example assignment settings:</p>
<ul class="pill">
<li>30% of module mark</li>
<li>2 late submission rules</li>
<li>10 points total</li>
</ul>The pill pattern is purely presentational. Screen readers will announce it as a normal list, so avoid using colour or position alone to convey meaning. Make sure the text inside each pill is self-explanatory.
Inline-only alternative: pill-style labels
If you prefer not to rely on the legacy pill class, you can create a similar effect using inline styles. This works in any context that allows inline CSS.
Example assignment settings:
30% of module mark2 late submission rules10 points total
<p>Example assignment settings:</p>
<p>
<span style="display: inline-block; margin: 0 0.25rem 0.25rem 0; padding: 0.15rem 0.5rem; border-radius: 999px; background: #eef4ff; color: #111322; font-size: 0.85rem;">
30% of module mark
</span>
<span style="display: inline-block; margin: 0 0.25rem 0.25rem 0; padding: 0.15rem 0.5rem; border-radius: 999px; background: #eef4ff; color: #111322; font-size: 0.85rem;">
2 late submission rules
</span>
<span style="display: inline-block; margin: 0 0.25rem 0.25rem 0; padding: 0.15rem 0.5rem; border-radius: 999px; background: #eef4ff; color: #111322; font-size: 0.85rem;">
10 points total
</span>
</p>Progress bar (Canvas legacy pattern)
Canvas includes a legacy progress bar built using <div> elements and enhanced by JavaScript. This displays a visual bar but does not behave like the semantic HTML <progress> element.
Example: module completion status
Module progress: 50% complete
<p>Example: module completion status</p>
<div id="progressbar"
class="ui-progressbar ui-widget ui-widget-content ui-corner-all"
role="progressbar"
aria-valuemin="0"
aria-valuemax="100"
aria-valuenow="50"
aria-valuetext="50% complete"
style="width: 100%; height: 24px;">
<div class="ui-progressbar-value ui-widget-header ui-corner-left"
style="width: 50%; background-color: #0000cd;">
</div>
</div>
<p>
<span class="screenreader-only">Module progress: </span>
<strong>50% complete</strong>
</p>If you change the progress value, remember to update aria-valuenow, aria-valuetext, and the inner bar's width so they all stay in sync (for example, 75% would use aria-valuenow="75", aria-valuetext="75% complete", and style="width: 75%;").
Inline-only alternative: semantic progressbar
You can create a simple, accessible progress indicator using only inline styles and ARIA attributes, without relying on Canvas' ui-progressbar classes. This will not animate automatically, but it is predictable and works wherever inline CSS is allowed.
Reading progress:
40% complete — 4 of 10 sections read.
<p id="inline-progress-label">Reading progress:</p>
<div role="progressbar"
aria-labelledby="inline-progress-label"
aria-valuemin="0"
aria-valuemax="100"
aria-valuenow="40"
aria-valuetext="40% complete"
style="width: 100%; height: 1.25rem; border-radius: 999px; border: 1px solid #d0d4dd; background: #f5f7fb; overflow: hidden;">
<div style="width: 40%; height: 100%; background: linear-gradient(90deg, #0000cd, #4c9dcd);"></div>
</div>
<p style="margin-top: 0.5rem">
<strong>40% complete</strong> — 4 of 10 sections read.
</p>Modern HTML reference (outside Canvas)
In modern HTML, progress is usually represented with the semantic <progress> element. However, in this Canvas instance the <progress> element is stripped out of Rich Content Editor HTML, so it is shown here only as a reference for web development outside Canvas.
<!-- Example of semantic HTML, not supported in Canvas content -->
<label for="module-progress">Module completion:</label>
<progress id="module-progress" value="0.5" max="1">50%</progress>Accessibility notes
Because these indicators are based on legacy Canvas patterns:
- Behaviours may vary across browsers and devices, especially for assistive technologies.
- The legacy progress bar does not automatically announce changes to screen readers; static values must be updated manually.
- Colour should never be the only way of communicating meaning or status. Always include a text description of the current value (for example, "40% complete — 4 of 10 sections read").
- Inline-only patterns that use
role="progressbar",aria-valuenow, and visible text are often more robust and predictable than JavaScript-enhanced widgets.