Accessibility
If HTML provides the semantic content of a site, CSS works to provide emphasis on visual
hierarchy and aesthetic elements. While not necessarily informational content, using CSS well
should enhance your ability to make a visual argument in the form of a web site. In addition,
CSS can make or break the accessibility of a site.
Learning Objectives
Section titled “Learning Objectives”- Apply HTML, CSS, Markdown, and basic Javascript to develop well-structured, responsive World Wide Web Consortium (W3C) standards-compliant web sites.
- Evaluate and implement web accessibility measures consistent with the Web Content Accessibility Guidelines (WCAG) version 2 specification.
- Design front-end user experiences using accepted web design patterns, methods, and information structures.
- Identify and use strategies of successful visual rhetoric for the web.
- Compare and select web technologies such as static site generators or frameworks as appropriate candidates for building web sites. Course Resources
The Coding Workbook, “Getting Started with CSS”
Accessibility
Section titled “”A couple of aspects to accessibility:
enabling as many people as possible to use websites, even when those people’s abilities are limited in some way.
MDN, “Accessibility”
The Web is fundamentally designed to work for all people, whatever their hardware, software, language, location,
or ability. When the Web meets this goal, it is accessible to people with a diverse range of hearing, movement,
sight, and cognitive ability.
W3C, “Accessibility”
These guidelines are developed, maintained, and advocated by the WAI (Web Accessibility Initative), a part of
the W3C (World Wide Web Consortium). While they’re not strictly a law, there can be legal reprecussions.
In addition, search engines, agentic frameworks, and other technologies can (and do!) de-privilege sites that
don’t follow the guidelines (to a certain extent).
The guidelines are referred to as the WCAG standard, currently on version 2.2.
In practice, that means somethink like the acronym POUR:

That is, the web should be:
- Perceivable
- Content is accessible via multiple senses (
alttags, transcripts) - Operable
- Content can be used from a variety of devices: not just a mouse.
- Understandable
- Navigation paths (both menus and URLs) are consistent and well-labled; help messages are well-written and precise.
- Robust
- The site doesn’t break when used with alternative technologies or in alternative viewports.
Perceivability
Section titled “Perceivability”Provide alternatives for non-text content
Section titled “Provide alternatives for non-text content”- All images that convey meaningful content should be given suitable alternative text.
- Use the
alttag on images
- Use the
- UI controls such as form elements and buttons should have text labels that describe their purpose.
- Use semantic tags where possible
- Implement decorative (non-content) images, video, etc., in a way that is invisible to assistive technology,
so it doesn’t confuse users.
- Implement all decorative items in
CSS; avoid doing so with<img>tags
- Implement all decorative items in
Create content that can be presented in different ways
Section titled “Create content that can be presented in different ways”- Any content structure—or visual relationship made between content—can also be determined programmatically, or be inferred from text description.
- A sensible, logical reading order should be easy to determine for any content, even if it is visually presented in an unusual way. The order should be made obvious by use of correct semantic elements (e.g., headings, paragraphs), with CSS being used to create any unusual layout styles, irrespective of the markup.
- Instructions for operating controls or understanding content do not rely on a single sense.
- Content does not restrict its view and operation to a single display orientation, such as portrait or landscape.
Operability
Section titled “Operability”Make all functionality available from a keyboard
Section titled “Make all functionality available from a keyboard”- All functionality should be accessible using keyboard controls, unless it cannot be done using the keyboard
- However, the spec. insinuates that all functionality should be accessible using keyboard controls — with no exceptions.
- If a single character key shortcut exists, then at least one of the following is true: single character key shortcuts can be turned off, remapped or are only active when the relevant user interface component is in focus.
Seizures and Physical Reactions: Do not design content in a way that is known to cause seizures or physical reactions
Section titled “Seizures and Physical Reactions: Do not design content in a way that is known to cause seizures or physical reactions”- Content doesn’t contain any aspect that Flashes more than three times per second
- Allow users to disable animations from interactions (unless the animation is essential).
Provide ways to help users navigate, find content, and determine where they are
Section titled “Provide ways to help users navigate, find content, and determine where they are”- A mechanism should be provided that allows the user to skip straight to the main content or functionality available on the page, past the repeated features (such as the company logo or navigation).
- Each web page should include an informative
<title> - The purpose/destination of a link can be determined from the link text, or from its surroundings (e.g. surrounding text)
- Heading (e.g.,
<h2>) and<label>elements clearly describe the purpose of the content and form elements they are supposed to be describing.
Understandable
Section titled “Understandable”Make text content readable and understandable
Section titled “Make text content readable and understandable”- The default human language of each web page should be detectable via code (e.g.,
<html lang = "en">) - Where technical terms, jargon, or idioms/slang are used, definitions should be provided for such phrases/words.
- If text is provided that requires a higher reading level that lower secondary education level (typically children around 11-14 years old), provide supplementary explainer material to help people who can’t read it
Make Web pages appear and operate in predictable ways
Section titled “Make Web pages appear and operate in predictable ways”- When a control or other page feature receives focus, it should not change the context in a way that may confuse or disorientate the user
- When data is inputted into a control, or a setting is changed, context should not be changed unexpectedly
- Navigation menu/control style and positioning should be consistent between different pages or views of a web page
- Controls or components that have the same functionality should be identified in the same way across different pages or views
When a user is filling out a form or choosing between options, any error that is detected should be clearly reported to the user, along with the form control that the error relates to.
Section titled “When a user is filling out a form or choosing between options, any error that is detected should be clearly reported to the user, along with the form control that the error relates to.”- When a user is filling out a form or choosing between options, any error that is detected should be clearly reported to the user, along with the form control that the error relates to
- Clear instructions should be provided when data input is required
- When an error is detected and suggestions for correction are known, provide these to the user (e.g., suggesting alternatives when the user is choosing a user name and has selected one that is already taken)
- Provide instructions and other appropriate cues in context to aid form completion and submission
Robustness
Section titled “Robustness”Maximize compatibility with current and future user agents, including assistive technologies
Section titled “Maximize compatibility with current and future user agents, including assistive technologies”- Content should be well-formed so it can be parsed successfully by browsers and other user agents such as screen readers.
- (i.e., use latest HTML standards, such as semantic tags!)
- The name and role of user interface components (e.g., form inputs, buttons, links, etc.) should be programmatically determinable
- When scripting custom components, you will need to use ARIA roles and other features to make sure your controls will be interpreted and are able to be used as intended