Inclusive design is designing for the diversity of our users. It's the process of making conscious decisions to check our assumptions about who is and isn't our audience, and the abilities they have or don't have. Lots of disabilities are 'invisible', and won't show up in analytics or statistics.
WCAG (Web Content Accessibility Guidelines): WCAG gives guidelines for levels of accessibility - Level A for meeting a baseline, Level AA for doing it well, Level AAA for doing it excellently
WAI-ARIA (Web Accessibility Initiative-Accessible Rich Internet Applications Suite)
Designs should be:
At the most basic level, users must be able to process and perceive information. They need to be able to operate websites and applications with a variety of tools. If users can perceive and operate a website, that doesn't mean they can understand it. Understandable websites use clear, concise language and offer functionality that is easy to comprehend. Additionally, users pick their own mix of technologies. Within limits, websites should be robust enough to work well enough across platforms, browsers, and devices to account for personal choice and user need.
Three lenses to consider
Example: a user reading content in their second language.
What might make things more difficult for this kind of user? Unusual words or jargon might mean they don't understand. Is the language plain and clear?
What if they...
are distracted or in a rush?
are reading something in a second (or third) language?
are tired, stressed, or depressed?
have autism, dyslexia, or a learning disability?
Example: a keyboard-only user. They don't use a mouse for moving around, dragging and dropping. They use the tab key to move through the page.
What might make things more difficult for this kind of user? Interactions like drag and drop will take longer. Moving through the page is more jumpy as they're moving in discrete steps rather than a continuous movement.
What if they...
are in a moving vehicle like a bus or train?
have an injury or illness?
have decreased and less precise motor control (perhaps from old age)?
have a condition like arthritis, cerebral palsy, fibromyalgia, lupus, or MS?
Example: a (blind) screen reader user. Not all screen reader users are blind, but for this thought experiment, let's consider a blind user. They get the text-only version.
What might make things more difficult for this kind of user? They can't see the layout or icons. What will they hear?
What if they...
are outside on a sunny day with a shiny screen?
are colour blind (colour vision deficiency)?
have low vision or poor eyesight (perhaps from old age)?
are completely blind?
Every form control needs a name (visible or not)
Example: buttons that are just icons.
Be explicit in the design! Annotate things with accessible names. We can use the word 'label' as a shorthand, but 'accessible name' is better (it's a bit more precise). See the documentation on state names for more information.
Each interactive thing on a page requires the following:
Operation and state are communicated by the control itself (e.g. a checkbox can be checked or unchecked, and its state is communicated to the user). Identity is the control's name. This can either come from a visible label (preferred) or from an ARIA attribute in the code.
Every group of controls needs a name (visible or not)
Example: a set of radios buttons for choosing your favourite colour: red, green, or blue.
Each radio has a name (red, green, blue), but we also need a name for the group ('Favourite colour'), so that the user knows what they're choosing red, green, or blue for. Without a group name, the user has no context for what they need to select.
Standard controls are much better for accessibility
Examples: radio buttons, checkboxes, text inputs.
They're well supported by the technology and they're well known by users. They can be combined, but don't forget the two notes listed above. There are some standard, accessible patterns for more complex things, but this requires extra work and may not be as well supported or as well known by users.