FAQ
Engineering School-of-the-Streets
FAQ using ARIA roles to meet WCAG 2 level AA
- Is the content fully hidden?
-
Yes.
This content is hidden both visually and aurally, and doesn't appear in the keychain until the button is activated (expanded = true).
- May an answer be displayed by default?
-
Apparently yes.
This content is available by default until the button deactivates it (expanded = false) which removes it visually, aurally and from the keychain.
Add the attribute
data-pab-expand
to thedt
to open it by default. - Can an answer be opened by URL reference?
-
Yes.
Any question may be expanded on page load by referencing its
id
in the URL.For example this content could be automatically opened by adding "#faq_3" to the URL in the address bar like so:
http://codepen.io/2kool2/pen/ZOkojB#faq_3The focus caret is moved to the activation button when referenced in this manner.
- Will it work with the font size scaled-up 200%?
-
Yes.
The height of a hidden block is calculated when the activaton button is pressed. It's also recalculated when the browser window is resized.
In fact this module should easily scale to 300%, limited only by the display width and word length.
How it works
Takes a dl
list and wraps each of its dt
content with a button
. The dt
is targeted by the data-pab
attribute which has the value of the id
of the dd
to show or
hide.
Adding the attribute data-pab-expand
to a dt
will make a dd
open by default.
If a dd
id
value is referenced as a fragment identifier in the URL, then it is also opened by default.
The code is very semantically written but has one caveat. It only allows a single dd
per dt
which is fine for an FAQ (but not so for a dictionary).
Note to self: Don't use "Lorem Ipsum" as place-holder text when sending for screen-reader testing. I nearly cried when I heard the gibberish spoken by Jaws today. Marking the block with a lang="la"
may be technically correct but hardly aids
comprehension.
GitHub repo: accessible-faq