ARIA and Other Attributes
ARIA attributes help add extra meaning to HTML elements in case their semantic meaning isn't enough to convey meaning to users. HTML5 usually gives a good amount of meaning to basic elements, but also may not be enough.
Descriptive ARIA
aria-label
- Has a string. A description for the element that is read out instead of it's content. Therefore these should not be used as a supplement or "hint" that goes with the element's content, since it will wind up replacing it!aria-expanded
- Has a boolean value. Tells if a connected menu or popup is expanded or not.aria-required
- Has a boolean value. Conveys if an input must be filled out.aria-expanded
- Has a boolean value. Convey if an attached or nested element, such as a menu, is currently expanded or not.aria-haspopup
- Has a boolean value. Only use to convey that an element has a corresponding popup element, such as a menu or (maybe) a modal. Best when paired witharia-expanded
.aria-describedby
- Has a string that matches the ID of another element. This other element has text which describes the current element. This attribute may have the ID of a paragraph tag describing its purpose. Most useful when the description can't be placed close to the element in the DOM.aria-labellededby
- Same asaria-describedby
but much shorter. Whiledescribedby
is often a more detailed paragraph,labellededby
is often a header and a concise definition of only a few words (such as a header). Most useful when the description can't be placed close to the element in the DOM, otherwise the nativelabel
element should work.aria-valuemin
- Specify an element's maximum possible value (such as for a progress bar)aria-valuemax
- Specify an element's minumum possible valuearia-valuenow
- Specifiy an element's current held value
ARIA States
aria-disabled
- If the basic HTMLdisabled
attribute doesn't work with an element (for example it would work withbutton
), this has a boolean value to convey if its disabled or not.
Aria for updates
aria-live
controls how changes to the related element will be announced to the user. Should only be used on elements that require the user's attention, such as contents in streams of content.
aria-live="off"
- an area isn’t live at the moment and shouldn’t give updatesaria-live="polite"
- an area will give an update during the next available time, like when a user is done typingaria-live="assertive"
- will announce updates immediately. Only use it for real important things, like errors.
Non-ARIA attributes
role
- Desribes the basic purpose or function of an element. This isn't needed with proper semantic HTML5 tags. For example, abutton
element doesn't need arole="button"
attribute since that would be redundant. But if there's no semantic tag for an element, adding arole
attribute will help convey its meaning.title
- Gives an element a basic "label" which is heard by screen readers and appears in a tooltip on hover. Due to inconsistent and unreliable screen reader interpretation and support, it is best avoided. It's more reliable to use extra text (possibly hidden except for screen readers) oraria-label
.alt
- Has a string, used on image elements to describe the image for users who can't see it.It doesn't need to start with "Photo of a ..." since the screen reader already announces it's a graphic.
Images inside links should use the alt text to concisely tell users what the link does or where it goes.
Resources
Last updated
Was this helpful?