Accessibility concept: Allow for multiple ways of interaction.
For example, if you're using a date picker (complex widget, often with accessibility barriers), ALSO allow people to type in the date (simple mechanism, no barriers)
P.S. - that's also called Progressive Enhancement
For example, if you're using a date picker (complex widget, often with accessibility barriers), ALSO allow people to type in the date (simple mechanism, no barriers)
P.S. - that's also called Progressive Enhancement
Another example...
If you're using an autosuggest (again, complex widget, often with accessibility barriers), don't assume someone will always be able to successfully select from the list. Allow for "not in the list" input by accepting whatever they typed as a search term.
If you're using an autosuggest (again, complex widget, often with accessibility barriers), don't assume someone will always be able to successfully select from the list. Allow for "not in the list" input by accepting whatever they typed as a search term.
If you're using fancy sliders to change a value, make the values editable so that a person could type in a value instead. Why? Some will want to use the sliders, but fine motor control might be tricky.
Using a simple form field makes it much easier to be precise.
Using a simple form field makes it much easier to be precise.
Have some complex keystroke interactions like you might find on a map?
Include non-fancy keystroke ways of manipulating the map like a simple button control that performs the same function.
Include non-fancy keystroke ways of manipulating the map like a simple button control that performs the same function.
All of these scenarios are better and more accessible by allowing for multiple methods of interaction.
Note this tiny little twist that I think is really really really important:
They're all using Progressive Enhancement from a DESIGN perspective, not just as a dev methodology
Note this tiny little twist that I think is really really really important:
They're all using Progressive Enhancement from a DESIGN perspective, not just as a dev methodology
In other words, when you are designing that thing, you should design it to be progressively enhanced.
This line of questioning "What's the smallest input I need for this interaction to move forward and what's the simplest way to get that input?" will guide you.
This line of questioning "What's the smallest input I need for this interaction to move forward and what's the simplest way to get that input?" will guide you.
A slider example (many years old, haven't looked at the code in a while, caveats etc):
http://examples.simplyaccessible.com/gazer/sliders.html
The numbers that change beside the sliders could have easily been in a <span>. Instead, put them in an input. They are now focusable, editable, and less complex.
http://examples.simplyaccessible.com/gazer/sliders.html
The numbers that change beside the sliders could have easily been in a <span>. Instead, put them in an input. They are now focusable, editable, and less complex.