Accessibility tree
Platform APIs
AT
Microsoft Active Accessibility
Microsoft User Interface Automation
MSAA
Mac OS X Accessibility Protocol
Linux/Unix Accessibility Toolkit
IAccessible2
Yo u r
markup
DOM
tree
Slide 20
Hiding
content
Slide 21
Hiding from screen
“visually hidden”
Slide 22
Icon button
EXAMPLE
Please accept our
cookie policy
OK
×
Slide 23
Required indicator
EXAMPLE
First name
*
Slide 24
position: absolute;
left: -9999em;
Slide 25
Slide 26
Hiding from AT
Slide 27
A decorative icon
EXAMPLE
!
Cars
Slide 28
Repeating text
that hinders AT users
EXAMPLE
Our company won a prize
We are very proud to announce that we
were nominated for an amazing price
and that we have actually won it, too.
Read more
We opened a new office
With the great opening party that took
place yesterday, it is now official: our
new office in Utrecht is open!
Read more
We’ll be at the trade show
The trade show is taking place next week
and we will be presenting interesting
new stuff. Visit our booth!
Read more
Slide 29
Repeating text
that hinders AT users
EXAMPLE
Our company won a prize
We are very proud to announce that we
were nominated for an amazing price
and that we have actually won it, too.
Read more
We opened a new office
With the great opening party that took
place yesterday, it is now official: our
new office in Utrecht is open!
Read more
We’ll be at the trade show
The trade show is taking place next week
and we will be presenting interesting
new stuff. Visit our booth!
Read more
Read more
Read more
Read more
Slide 30
aria-hidden
Slide 31
<div aria-hidden></div>
Slide 32
If you find you have to
use
aria-hidden
, this may
indicate there’s something
wrong with the page
Slide 33
Repeating text
that hinders AT users
EXAMPLE
Our company won a prize
We are very proud to announce that we
were nominated for an amazing price
and that we have actually won it, too.
Read more
We opened a new office
With the great opening party that took
place yesterday, it is now official: our
new office in Utrecht is open!
Read more
We’ll be at the trade show
The trade show is taking place next week
and we will be presenting interesting
new stuff. Visit our booth!
Read more
Slide 34
Slide 35
Hiding from everything
Slide 36
A modal panel that
is not currently shown
EXAMPLE
Perhaps the most heavily-repeated pattern in
JavaScript-based page manipulation is
showing and hiding content. Tabbed interfaces.
Collapsible elements. Accordion widgets. It
crops up nearly everywhere. In and of itself,
this pattern is not a bad thing, but few people
realize how profoundly your choice of hiding
mechanism can influence the accessibility of
your content to assistive technologies like
screen readers.
When building custom
JavaScript-based widgets, it’s quite easy to
fully control the hiding mechanism, but when
you begin working with animation libraries like
jQuery or Scriptaculous, the hiding mechanism
is typically dictated by the library, leaving you
little control over the accessibility of your
Are you sure?
NO
YES
Slide 37
A tab control that
is closed
EXAMPLE
Personal details
Your application
Agreement
Summary
△
▽
▽
▽
Slide 38
display: none;
Slide 39
hidden
Slide 40
<div hidden></div>
Slide 41
Slide 42
Not exposed by a11y tree
Not rendered
Invisible to text search
Makes the element and
its entire subtree
inert
:
visible, but unusable
Slide 47
No pointer events.
No focus.
Invisible to text search.
Impossible to select.
Slide 48
Rest of the page
while modal is open
(“<dialog> without <dialog>” –
Hixie
)
EXAMPLE
Perhaps the most heavily-repeated pattern in
JavaScript-based page manipulation is
showing and hiding content. Tabbed interfaces.
Collapsible elements. Accordion widgets. It
crops up nearly everywhere. In and of itself,
this pattern is not a bad thing, but few people
realize how profoundly your choice of hiding
mechanism can influence the accessibility of
your content to assistive technologies like
screen readers.
When building custom
JavaScript-based widgets, it’s quite easy to
fully control the hiding mechanism, but when
you begin working with animation libraries like
jQuery or Scriptaculous, the hiding mechanism
is typically dictated by the library, leaving you
little control over the accessibility of your
Are you sure?
NO
YES
Slide 49
Non current
carousel items
EXAMPLE
Now playing
➜
➜
Slide 50
‘Shipping address’
section when ‘Same
as billing address’ is
checked
EXAMPLE
Billing address
Shipping address
✔
Same as billing address
Street
*
Postal code
*
City
*
Street *
Postal code *
City *
Slide 51
Hiding content
From screen From AT From everything Inert
Accessible to:
✔
AT users
✗
sighted users
Accessible to:
✗
AT users
✔
sighted users
Accessible to:
✗
AT users
✗
sighted users
Visible,
but not
usable
Note that there are a lot of different ATs, and
they are not all for users with sight impairments
Slide 52
Further reading
http://www.scottohara.me/blog/2017/04/14/inclusively-hidden.html