You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/front-end/web-accessibility.md
+38-23
Original file line number
Diff line number
Diff line change
@@ -2,19 +2,33 @@
2
2
3
3
Accessibility is a mode of developing your website or application that anyone regardless of their physical, cognitive, or current ability can navigate, interact, and contribute to that website. The focus lies on making your user experience usable by as many people as possible. The official reference would be [WCAG](https://www.w3.org/WAI/WCAG22/quickref/). It's a list of things a developer is supposed to do to make a site more accessible for people with disabilities. This doesn't just cover people who are blind. It also includes people with color vision problems, partial deafness, physical impairment, advancing age, etc.
4
4
5
-
The [Web Content Accessibility Guidelines](https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_WCAG) has summarized down the core concepts into 4 principles:
5
+
The [Web Content Accessibility Guidelines](https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_WCAG) has summarized down the core concepts into 4 principles, referred to as POUR:
6
6
7
7
- Perceivable: Any user should be able to perceive it in some way, using one or more of their senses.
8
-
9
8
- Operable: Any user must be able to use controls, buttons, navigation, and other interactive elements by themselves (e.g. buttons must be clickable using mouse, keyboard, voice command, etc.). Additionally, it takes into account that disabled users will use assistive technology like voice recognition, keyboards, screen readers, and so on.
10
-
11
9
- Understandable: Any user should be able to understand the content.
12
-
13
10
- Robust: The content should adhere well-adopted web standards that are functional cross-browsers, now and in the future.
14
11
15
12
## Guidance
16
13
17
-
A lot of the obvious things can be automated, however a majority of accessibility issues that impact users are things that are difficult or impossible to programmatically determine. As developers, we are aware about the importance of making our websites/ apps accessible to all users, but the journey to achieving this can be quite complex. Here are reference resources provided in the WCAG docs which should be your first point of reference.
14
+
Staying updated on the latest trends, tools, and advancements in accessibility is crucial for ensuring that our team remains well-informed and knowledgeable about evolving standards. Through our experience, we did realize that a lot of the obvious things can be automated, however a majority of accessibility issues that impact users are things that are difficult or impossible to programmatically determine. As developers, we are aware about the importance of making our websites/ apps accessible to all users, but the journey to achieving this can be quite complex. Interacting with end users, our team understood that accessibility is necessary towards establishing your brand as inclusive and socially responsible, which is fairly important in today's markets.
15
+
16
+
Before we understood on how to implement web accessibility, the teams at IBM & Red Hat first started with who is behind this initiative. There’s quite a few acronyms for the organizations, projects, and guidelines themselves, so let’s break those down first.
17
+
18
+
Before our developers started to implement web accessibility, they looked into the communities that are behind this initiative. Diving through the resources, we observed there are a plethora of acronyms for various organizations, projects, and guidelines - so there’s a short summary on who sets the guidelines for web accessibility
19
+
* W3C – The World Wide Web consortium (W3C), the organization that sets standards for web accessibility compliance.
20
+
* WAI – Web Accessibility Initiative (WAI) is W3C’s initiative for creating the guidelines.
21
+
* WCAG – The actual accessibility guidelines are the Web Content Accessibility Guidelines (WCAG).
22
+
23
+
There are three levels of web accessibility that teams can aim to achieve. Following levels exist as a part of the guidelines and each level covers guidelines from previous levels before advancing to the next level.
24
+
25
+
* A Level: The easiest level of difficulty to implement with least guidelines to follow. It is the baseline for all websites to adhere by.
26
+
* AA Level: This live includes A-level guidelines, and several other detailed design-specific guidelines. It is mid-level of difficulty to implement.
27
+
* AAA Level: This level includes all previous levels’ guidelines in addition to advanced details with respect tp animations and content.
28
+
29
+
In our product development experiences at IBM, we’ve found that to be fully compliant teams will need to meet all three standards: WCAG 2.1, US Section 508, and EU’s EN 301 549 standards. Links to [IBM accessibility requirements](https://www.ibm.com/able/requirements/requirements/), [Red Hat accessibility requirements](https://www.redhat.com/en/about/digital-accessibility)
30
+
31
+
Here are reference resources provided in the WCAG docs which should be your first point of reference.
18
32
19
33
- How to Meet [WCAG](https://www.w3.org/WAI/WCAG22/quickref/?versions=2.1) (Quick Reference)
20
34
- Index of [ARIA Design Pattern](https://www.w3.org/WAI/ARIA/apg/) Examples
@@ -30,73 +44,74 @@ Other links:
30
44
31
45
## Tools
32
46
33
-
In addition to keeping up to date with constantly evolving WCAG guidelines, instances or considerations around ensuring proper color contrasts to implement keyboard navigation and screen reader compatibility can be an extensive list. This is where tools can be a win to simplify the entire process. These tools assist in automating a lot of the heavy lifting, like scanning for common accessibility issues and suggesting possible fixes. It's a good balance between saving time, addressing accessibility related issues as well educating about best practices in accessibility. Some of the tools widely used in the community:
47
+
In addition to keeping up to date with constantly evolving WCAG guidelines, instances or considerations around ensuring proper color contrasts to implement keyboard navigation and screen reader compatibility can be an extensive list. From our past experiences, we've realized that this is where tools can be a win to simplify the entire process. These tools assist in automating a lot of the heavy lifting, like scanning for common accessibility issues and suggesting possible fixes. It's a good balance between saving time, addressing accessibility related issues as well educating about best practices in accessibility. Some of the tools widely used in the community:
This is the tool offered by IBM. You can find a web version (chrome and firefox extensions) and the [npm](https://www.npmjs.com/package/accessibility-checker) library on the site. The tool uses IBM's accessibility rules engine detecting WCAG 2.1 accessibility issues for web-based content or applications. Checkout [IBM Accessibility Central](https://pages.github.ibm.com/IBMa/able/) to better understand accessibility and making software accessible at IBM.
37
-
38
51
IBM's Developer [guidelines and checklist](https://www.ibm.com/able/guidelines/index.html).
39
-
40
52
-[Tools List by W3C](https://www.w3.org/WAI/test-evaluate/tools/list/)
41
-
42
53
-[Pa11y](https://pa11y.org/)
43
-
44
54
-[Axe](https://github.com/dequelabs/axe-core)
45
55
- Using Lighthouse with hints in Chrome inspector
46
56
47
57
Other than the automated tools, manual testing methods are also used for accessibility testing. Following methods are used after a first pass with automated tools is completed.
48
58
49
59
- Content Review
50
60
Navigating and reading through content with accessibility best practices in mind.
51
-
52
61
- Keyboard Testing
53
62
Checking if all interactive elements can be operated with a keyboard.
54
-
55
63
- Screen Reader Review
56
64
Using a screen reader to test and uncover issues with reading order and interactive elements.
57
65
58
66
Recommendations of manual accessibility testing tools:
59
67
68
+
In our experiences, our team has found the following tools to be a good fit in their development workflows:
This It allows users to quickly see an outline of the page's heading levels and HTML5 tags. If someone skipped a heading level (eg: went from h2 to h4), this tool helps identify it.
75
+
76
+
## High Level checklist on ways to make your site/ application more accessible
62
77
63
-
## High Level overview on ways to make your site/ application more accessible
78
+
Through our development workflows, creating an accessibility checklist for the team to always refer is a good way to help the entire team to learn about accessibility.
64
79
65
-
- Images and alt attributes
80
+
###Images and alt attributes
66
81
67
82
Use the alt attribute when using images. Add a descriptive alternative text for the image. Additionally, have alt texts so that users who have network issues will have an idea of the image before they see it.
68
83
69
-
- Links and context
84
+
###Links and context
70
85
71
86
Accessible hypertext links are very important aspects for accessible web pages and documents.
72
87
Accessible links are not just helpful for people with disabilities, well-written link text descriptions enhances user experience for any user. Following are some high level guidelines that should be followed:
73
88
74
-
1. Ensure concise, descriptive and meaningful anchor text
89
+
1. Ensure concise, descriptive and meaningful anchor text. Also avoid using "click here", "read more" or "learn more" as link text.
75
90
2. Avoid capitalization all letters in links
76
91
3. Avoid usage of URLs for link text, and limit use of redirects
77
92
4. Avoid using the word "link" as part of the link text
78
93
5. Avoid using tooltips/screentips to add additional information
79
94
80
-
- Add Keyboard navigation
95
+
###Add Keyboard navigation
81
96
82
-
Create an accessible experience for keyboard users by making sure disabled users can access all interactive elements of your site/ app.
97
+
Create an accessible experience for keyboard users by making sure disabled users can access all interactive elements of your site/ app. Avoid attaching event listeners to non-interactive elements like <div> whenever possible. Use interactive elements like <button> and <a> instead.
83
98
84
-
- ARIA Landmarks and HTML Semantics
99
+
###ARIA Landmarks and HTML Semantics
85
100
86
101
ARIA landmarks are attributes that should be added to an element to define roles on the site. HTML semantic elements and ARIA landmarks help screen readers know where they are going, and assist to easily jump from one section to another. Landmarks can be added using the role attribute. Add ARIA attributes sparingly, and only when HTML does not already express the intended semantic. Example: no need to add `aria-disabled="true"` if the element already has a HTML5 disabled attribute.
87
102
88
-
- Make Video and Multimedia Accessible
103
+
###Make Video and Multimedia Accessible
89
104
90
105
A combination of things like choosing an accessible media player, adding captions, and using the right colors and font. Note to avoid accessibility barriers when planning, scripting, storyboarding, and recording your media.
91
106
92
-
- Keep Contrast Sensitivity in Mind
107
+
###Keep Contrast Sensitivity in Mind
93
108
94
109
The color choices and the relationships between those hues can impact user experience drastically. If colors with not enough contrast are chosen, portions of the site/ app may appear hard to read and navigate for people with visual impairments. A rule of thumb would be to avoid color combinations that could be hard to distinguish from one another. The luminosity contrast ratio could be used to design with low contrast sensitivity in mind.
95
110
96
-
- Control focus with tabindex, stylefocus
111
+
###Control focus with tabindex, stylefocus
97
112
98
113
Keyboard-only users should be able to perceive where focus is at all times and visible elements with focus should be viewable.
99
114
100
-
- Make transitions and animations accessible
115
+
###Make transitions and animations accessible
101
116
102
117
Users should be able to pause, stop, or hide moving content. Additionally, there should be options available for users to turn off motion animation
0 commit comments