id | name | rule_type | description | accessibility_requirements | input_aspects | acknowledgments | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
6cfa84 |
Element with `aria-hidden` has no focusable content |
atomic |
This rule checks that elements with an `aria-hidden` attribute do not contain focusable elements.
|
|
|
|
This rule applies to any element with an aria-hidden
attribute value of true
.
Note: Using aria-hidden="false"
on a descendant of an element with aria-hidden="true"
does not expose that element. aria-hidden="true"
hides itself and all its content from assistive technologies.
None of the target elements are part of sequential focus navigation, nor do they have descendants in the flat tree that are part of sequential focus navigation.
There are currently no assumptions
Some user agents treat the value of aria-hidden
attribute as case-sensitive.
By adding aria-hidden="true"
to an element, content authors ensure that assistive technologies will ignore the element. This can be used to hide parts of a web page that are pure decoration, such as icon fonts - that are not meant to be read by assistive technologies.
A focusable element with aria-hidden="true"
is ignored as part of the reading order, but still part of the focus order, making its state of visible or hidden unclear.
- CSS Scoping Module Level 1 (editor's draft)
- Understanding Success Criterion 1.3.1: Info and Relationships
- Understanding Success Criterion 4.1.2: Name, Role, Value
aria-hidden
(state)- Fourth rule of ARIA use
Content not focusable by default.
<p aria-hidden="true">Some text</p>
Content hidden through CSS.
<div aria-hidden="true">
<a href="/" style="display:none">Link</a>
</div>
Content taken out of sequential focus order using tabindex
.
<div aria-hidden="true">
<button tabindex="-1">Some button</button>
</div>
Content made unfocusable through disabled
attribute.
<input disabled aria-hidden="true" />
aria-hidden
can't be reset once set to true on an ancestor.
<div aria-hidden="true">
<div aria-hidden="false">
<button tabindex="-1">Some button</button>
</div>
</div>
Content taken out of sequential focus order using tabindex
.
<div aria-hidden="true">
<button tabindex="-2">Some button</button>
</div>
Focusable off screen link.
<div aria-hidden="true">
<a href="/" style="position:absolute; top:-999em">Link</a>
</div>
Focusable form field, incorrectly disabled.
<div aria-hidden="true">
<input aria-disabled="true" />
</div>
aria-hidden
can't be reset once set to true on an ancestor.
<div aria-hidden="true">
<div aria-hidden="false">
<button>Some button</button>
</div>
</div>
Focusable content through tabindex
.
<p tabindex="0" aria-hidden="true">Some text</p>
Focusable summary
element.
<details aria-hidden="true">
<summary>Some button</summary>
<p>Some details</p>
</details>
Ignore aria-hidden
with null value.
<button tabindex="-1" aria-hidden>Some button</button>
Ignore aria-hidden
false.
<p aria-hidden="false">Some text</p>
Incorrect value of aria-hidden
.
<div aria-hidden="yes">
<p>Some text</p>
</div>