forked from Heydon/inclusive-design-checklist
-
Notifications
You must be signed in to change notification settings - Fork 0
/
checklist.json
302 lines (302 loc) · 9.98 KB
/
checklist.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
[
{
"item": "Minify CSS and JS, and remove unused/redundant code",
"resources": ["https://developers.google.com/speed/docs/insights/MinifyResources"]
},
{
"item": "Maintain terse HTML, without over-reliance on `<div>` scaffolding",
"resources": ["http://designingforperformance.com/optimizing-markup-and-styles/#divitis"]
},
{
"item": "Use screen reader and keyboard accessible HTML",
"resources": ["https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML"]
},
{
"item": "Compress raster images",
"resources": ["https://www.html5rocks.com/en/tutorials/speed/img-compression/"]
},
{
"item": "Optimize SVG path data",
"resources": ["https://web-design-weekly.com/2014/10/22/optimizing-svg-web/"]
},
{
"item": "Make sure heading levels describe a logical section/subsection structure",
"resources": ["https://webaim.org/techniques/semanticstructure/"]
},
{
"item": "Only include heading elements where they introduce sections of content"
},
{
"item": "Remove potentially insensitive or uninclusive language (use \"singular they\")",
"resources": ["http://alexjs.com/"]
},
{
"item": "Give video content captions and transcripts"
},
{
"item": "Provide transcripts for audio content"
},
{
"item": "Make sure main body (paragraph) text is no smaller than the default (user agent) size",
"resources": ["https://www.smashingmagazine.com/2011/10/16-pixels-body-copy-anything-less-costly-mistake/"]
},
{
"item": "Support \"pinch zoom\" (remove `user-scalable=no` if present)"
},
{
"item": "Use relative units (`em`, `rem`, and `ch`), especially for font metrics"
},
{
"item": "Make sure styles and scripts are not render blocking",
"resources": ["https://csabapalfi.github.io/eliminate-render-blocking/"]
},
{
"item": "Install a service worker and cache all applicable assets",
"resources": ["https://css-tricks.com/serviceworker-for-offline/"]
},
{
"item": "Use content-based, not device-specific, media queries",
"resources": ["http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/#content"]
},
{
"item": "Provide alternatives and/or descriptions for complex visualizations"
},
{
"item": "Include only clear, meaningful animations"
},
{
"item": "Honor requests to remove animation via the `prefers-reduced-motion` media query"
},
{
"item": "Make sure controls do not elicit unexpected or jarring behavior",
"resources": ["https://www.w3.org/TR/UNDERSTANDING-WCAG20/consistent-behavior-receive-focus.html", "https://www.w3.org/TR/UNDERSTANDING-WCAG20/consistent-behavior-unpredictable-change.html"]
},
{
"item": "Do not include third parties that compromise user privacy",
"resources": ["https://css-tricks.com/potential-dangers-of-third-party-javascript/"]
},
{
"item": "Do not recreate supported and expected browser behaviors with bespoke scripts"
},
{
"item": "Support Windows high contrast mode (use images, not background images)",
"resources": ["http://adrianroselli.com/2012/08/css-background-images-high-contrast-mode.html"]
},
{
"item": "Provide alternative text for salient images",
"resources": ["https://www.w3.org/WAI/tutorials/images/decision-tree/"]
},
{
"item": "Apply `alt=\"\"` or `aria-hidden=\"true\"` to decorative images",
"resources": ["https://www.w3.org/WAI/tutorials/images/decorative/"]
},
{
"item": "Make sure text and background colors contrast sufficiently",
"resources": ["https://accessibility.blog.gov.uk/2016/06/17/colour-contrast-why-does-it-matter/"]
},
{
"item": "Provide `<title>`s that name the site and the specific page",
"resources": ["https://www.w3.org/TR/WCAG20-TECHS/G88.html"]
},
{
"item": "Provide large touch \"targets\" for interactive elements",
"resources": ["http://www.bbc.co.uk/guidelines/futuremedia/accessibility/mobile/design/touch-target-size"]
},
{
"item": "Use data tables (`<table>`) for data only, not visual layout purposes"
},
{
"item": "Make scrollable elements focusable for keyboard users"
},
{
"item": "Do not rely on color for differentiation of visual elements"
},
{
"item": "Use the same design patterns to solve the same problems"
},
{
"item": "Ensure keyboard focus order is logical regarding visual layout"
},
{
"item": "Lazy load large image assets"
},
{
"item": "Honour DNT (Do Not Track) header",
"resources": ["https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/DNT"]
},
{
"item": "Translate / spell out acronyms the first time you use them"
},
{
"item": "Do not hijack standard scrolling behavior"
},
{
"item": "Move focus between dialogs and the controls that invoked them"
},
{
"item": "Provide focus traps to dialogs and make other elements non-selectable",
"resources":["https://css-tricks.com/a-css-approach-to-trap-focus-inside-of-an-element/"]
},
{
"item": "Give all form elements permanently visible labels"
},
{
"item": "Give grouped form elements group labels"
},
{
"item": "Place labels above form elements"
},
{
"item": "Provide status and error messages as WAI-ARIA live regions"
},
{
"item": "Provide clear, unambiguous focus styles"
},
{
"item": "Employ well-balanced, highly legible fonts (not too complex or elaborate)"
},
{
"item": "Do not use very thin font faces",
"resources":["http://www.telegraph.co.uk/science/2016/10/23/internet-is-becoming-unreadable-because-of-a-trend-towards-light/"]
},
{
"item": "Ensure states (pressed, expanded, invalid, etc) are communicated to assistive software"
},
{
"item": "Match semantics to behavior for assistive technology users"
},
{
"item": "Provide a default language and use `lang=\"[ISO code]\"` for subsections in different languages"
},
{
"item": "Make controls look like controls; give them strong perceived affordance"
},
{
"item": "Underline links — at least in body copy"
},
{
"item": "Make sure all content belongs to a landmark element (`<header>`, `<footer>`, `<nav>`, `<main>`, etc)"
},
{
"item": "Avoid pure white or pure black shades"
},
{
"item": "Mark invalid fields clearly and provide associated error messages"
},
{
"item": "Ensure content is not obscured through zooming (no fixed widths)"
},
{
"item": "Provide a `manifest.json` file for identifiable homescreen entries"
},
{
"item": "Indicate swipe gesture support clearly, and provide simple tap-based alternatives"
},
{
"item": "Make sure data tables wider than their container can be scrolled horizontally"
},
{
"item": "Avoid time constraints where possible; provide a clear warning and option to extend where not possible"
},
{
"item": "Label and describe the same things with the same terminology"
},
{
"item": "Ensure disabled controls are not focusable"
},
{
"item": "Do not instate \"infinite scroll\" by default; provide buttons to load more items"
},
{
"item": "Avoid justified body text",
"resources": ["https://www.w3.org/TR/WCAG20-TECHS/F88.html"]
},
{
"item": "Provide enough spacing between lines of text (`line-height`)",
"resources": ["https://www.w3.org/TR/WCAG20-TECHS/C21.html"]
},
{
"item": "Ensure PDF content is accessible (include tags)",
"resources": ["https://webaim.org/techniques/acrobat/"]
},
{
"item": "Provide a skip link if necessary ",
"resources": ["https://webaim.org/techniques/skipnav/"]
},
{
"item": "Avoid all-caps text",
"resources": ["https://github.com/humanmade/hm-pattern-library/issues/75"]
},
{
"item": "Ensure that content is written as clearly and simply as possible",
"resources": ["https://www.w3.org/TR/UNDERSTANDING-WCAG20/meaning-supplements.html"]
},
{
"item": "Provide descriptive captions for figures"
},
{
"item": "Warn users of links that have unusual behaviors, like linking off-site, or loading a new tab"
},
{
"item": "Make content easier to find and improve search results with structured data",
"resources": ["https://developers.google.com/search/docs/guides/prototype"]
},
{
"item": "Use textual labels to make voice activation cues obvious"
},
{
"item": "Do not mark up subheadings/straplines with separate heading elements"
},
{
"item": "Ensure primary calls to action are easy to recognize and reach"
},
{
"item": "Avoid images of text — text that cannot be translated, selected, or understood by assistive tech"
},
{
"item": "Provide a print stylesheet (single column, with interactive content hidden)"
},
{
"item": "Use well-established, therefore recognizable, icons and symbols"
},
{
"item": "Subset fonts to just the characters needed"
},
{
"item": "Instead of obstructing users with CAPTCHAs, use honeypots",
"resources": ["https://en.wikipedia.org/wiki/Honeypot_(computing)"]
},
{
"item": "Begin long, multi-section documents with a table of contents"
},
{
"item": "Do not make users perform actions to reveal content unless completely necessary"
},
{
"item": "If content is meant to be hidden, ensure it is properly hidden to all users"
},
{
"item": "Make sure controls within hidden content are not focusable"
},
{
"item": "Use `srcset` to tailor images to devices and reduce bandwidth costs"
},
{
"item": "Do not auto focus form fields, on page load"
},
{
"item": "Break up long and complex forms into discrete sections and/or screens"
},
{
"item": "Make forms as short as possible; offer shortcuts like autocompleting the address using the postcode"
},
{
"item": "Ensure the same content is available across different devices and platforms"
},
{
"item": "Inform the user when there are important changes to the application state"
},
{
"item": "Make sure the purpose of a link is clearly described: \"read more\" vs. \"read more about accessibility\""
}
]