ARIA: meter role

The meter role is used to identify an element being used as a meter.

Note: Where possible, it is recommended that you use a native <meter> element rather than the meter role, as native elements are more widely supported by user agents and assistive technology.

Description

A meter is a graphical display of a numeric value within a defined range. For example, showing battery percentage. A meter is not appropriate for values that do not have a meaningful maximum limit. Meters should not be used to indicate progress (for example loading), this should be communicated with the <progress> element.

Each element with role="meter" must also have one of the following:

All descendants are presentational

There are some types of user interface components that, when represented in a platform accessibility API, can only contain text. Accessibility APIs do not have a way of representing semantic elements contained in a meter. To deal with this limitation, browsers, automatically apply role presentation to all descendant elements of any meter element as it is a role that does not support semantic children.

For example, consider the following meter element, which contains a heading.

<div role="meter"><h3>Title of my meter</h3></div>

Because descendants of meter are presentational, the following code is equivalent:

<div role="meter"><h3 role="presentation">Title of my meter</h3></div>

From the assistive technology user's perspective, the heading does not exist since the previous code snippets are equivalent to the following in the accessibility tree.:

<div role="meter">Title of my meter</div>

Associated ARIA roles, states, and properties

aria-valuenow

Set to a decimal value between aria-valuemin and aria-valuemax indicating the current value of the meter.

aria-valuetext

Assistive technologies often present the value of aria-valuenow as a percentage. If this would not be accurate use this property to make the meter value understandable.

aria-valuemin

Set to a decimal value representing the minimum value, and less than aria-valuemax.

aria-valuemax

Set to a decimal value representing the maximum value, and greater than aria-valuemin.

It is recommended to use a native <meter> element rather than the meter role. User agents provide a stylize widget for the <meter> element based on the current value as it relates to the min and max values. When using non-semantic elements, all features of the native semantic element need to be recreated with ARIA attributes, JavaScript and CSS.

Examples

An example of a meter using role="meter":

<div role="meter"
  aria-valuenow="90"
  aria-valuemin="0"
  aria-valuemax="100"
  aria-labelledby="cpu_usage_label">
  <svg xmlns="http://www.w3.org/2000/svg"
    aria-hidden="true" style="width: 90%">
    <rect x="0"
       y="0"
       width="100%"
       height="100%"
       fill="currentColor"></rect>
  </svg>
</div>

In the above scenario, when the aria-valuenow value updates, the width of the SVG also needs to be updated as can be seen in the W3C working meter example.

Specifications

Specification Status
Accessible Rich Internet Applications (WAI-ARIA) 1.2
The definition of 'meter' in that specification.
Working Draft

See also