4. What can ARIA do for you?
https://youtu.be/7vz1aakYHtw
The checkbox example demonstarated how ARIA modifies the semantic information of an element on the page.
- [x] Receive promotional offers
<!-- custom checkbox -->
<div role="checkbox" aria-checked="true">
Receive promotional offers
</div>
checkbox
name: "Receive promotional offers"
state: checked
ARIA attributes can be used in a number of ways to augment the existing ways we can express semantics in HTML.11
1. Add Semantics
ARIA can add semantics to an element where no native semantics exist.
<!-- [from] -->
<div class="checkbox checked"> Receive promotional offers
</div>
: Text > value: "Receive promotional offers"
<!-- [to] -->
<div role="checkbox" aria-checked="true"> Receive promotional offers
</div>
: checkbox > name: "Receive promotional offers", state: checked
2. Modify Semantics
ARIA can also modify existing elements semantics within certain bounds.
<!-- from : This is a on/off switch example -->
<button class="toggle" checked> Enable </button>
: button > name: "Enable"
<!-- to -->
<button role="switch" aria-checked="true" class="toggle"> Enable </button>
: switch > name: "Enable", state: checked
3. Express more UI patterns
Accessibility course (treeitem, main) ::::::::
li role="treeitem", aria-expanded("true", -)
`ul, role="group"`
> Introduction (treeitem, sub) ::::::::::::::::::::::::::
li, role="treeitem", aria-expaned("false", >)
> Focus (treeitem, sub) ::::::::::::::::::::::::::::::::::::
li, role="treeitem", aria-expaned("false", >)
...
<ul role="tree">
<li role="treeitem" aria-expanded="true">Accessibility course</li>
<ul role="group">
<li role="treeitem" aria-expanded="false">Introduction</li>
<li role="treeitem" aria-expanded="false">Focus</li>
...
4. Extra labels and descriptions
ARIA can add extra label and description text, which is only exposed to assisted techonology APIs.
<!-- from -->
<button class="glyph">
<div class="filter-glyph"></div>
</button>
: button > name: ""
<!-- to -->
<button class="glyph" aria-label="filter">
<div class="menu-glyph"></div>
</button>
: button > name: "filter"
5. Relationships
ARIA can also expressed semantic relationships between elements which go beyond standard DOM parent, child, and sibling relationships.
Advanced settings
- [x] Offer to translate content
- [x] Send usage statistics and crash reports
<button aria-expanded="false" aria-controls="advanced-settings">
<h2>Advanced settings</h2>
</button>
<div id="advanced-settings">
<label><input type="checkbox">Offer to..</label>
<label><input type="checkbox">Send usage...</label>
</div>
: group
(parent) (parent)
button (control) group
name:"Advanced.." name:""
state:expanded
6. Live updates
ARIA can make part of the page live, that is inform assistive technology right away when they change.
<div role="alert">
Could not connect!
</div>
ARIA 1.0 spec:https://www.w3.org/TR/wai-aria/
ARIA 1.1 spec:https://www.w3.org/TR/wai-aria-1.1/