├── README.md
├── checklist.json
└── generator
└── index.js
/README.md:
--------------------------------------------------------------------------------
1 | # Inclusive Web Design Checklist
2 |
3 | Aims to be the **biggest** checklist of inclusive design considerations for the web _ever_. Includes items for accessibility, performance, device support, interoperability, and language. Pull requests welcome!
4 |
5 | - [ ] Minify CSS and JS, and remove unused/redundant code [[#1](https://developers.google.com/speed/docs/insights/MinifyResources)]
6 | - [ ] Maintain terse HTML, without over-reliance on `
` scaffolding [[#1](http://designingforperformance.com/optimizing-markup-and-styles/#divitis)]
7 | - [ ] Use screen reader and keyboard accessible HTML [[#1](https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML)]
8 | - [ ] Compress raster images [[#1](https://www.html5rocks.com/en/tutorials/speed/img-compression/)]
9 | - [ ] Optimize SVG path data [[#1](https://web-design-weekly.com/2014/10/22/optimizing-svg-web/)]
10 | - [ ] Make sure heading levels describe a logical section/subsection structure [[#1](https://webaim.org/techniques/semanticstructure/)]
11 | - [ ] Only include heading elements where they introduce sections of content
12 | - [ ] Remove potentially insensitive or uninclusive language (use "singular they") [[#1](http://alexjs.com/)]
13 | - [ ] Give video content captions and transcripts
14 | - [ ] Provide transcripts for audio content
15 | - [ ] Make sure main body (paragraph) text is no smaller than the default (user agent) size [[#1](https://www.smashingmagazine.com/2011/10/16-pixels-body-copy-anything-less-costly-mistake/)]
16 | - [ ] Support "pinch zoom" (remove `user-scalable=no` if present)
17 | - [ ] Use relative units (`em`, `rem`, and `ch`), especially for font metrics
18 | - [ ] Make sure styles and scripts are not render blocking [[#1](https://csabapalfi.github.io/eliminate-render-blocking/)]
19 | - [ ] Install a service worker and cache all applicable assets [[#1](https://css-tricks.com/serviceworker-for-offline/)]
20 | - [ ] Use content-based, not device-specific, media queries [[#1](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/#content)]
21 | - [ ] Provide alternatives and/or descriptions for complex visualizations
22 | - [ ] Include only clear, meaningful animations
23 | - [ ] Honor requests to remove animation via the `prefers-reduced-motion` media query
24 | - [ ] Make sure controls do not elicit unexpected or jarring behavior [[#1](https://www.w3.org/TR/UNDERSTANDING-WCAG20/consistent-behavior-receive-focus.html)] [[#2](https://www.w3.org/TR/UNDERSTANDING-WCAG20/consistent-behavior-unpredictable-change.html)]
25 | - [ ] Do not include third parties that compromise user privacy [[#1](https://css-tricks.com/potential-dangers-of-third-party-javascript/)]
26 | - [ ] Do not recreate supported and expected browser behaviors with bespoke scripts
27 | - [ ] Support Windows high contrast mode (use images, not background images) [[#1](http://adrianroselli.com/2012/08/css-background-images-high-contrast-mode.html)]
28 | - [ ] Provide alternative text for salient images [[#1](https://www.w3.org/WAI/tutorials/images/decision-tree/)]
29 | - [ ] Apply `alt="` or `aria-hidden="true"` to decorative images [[#1](https://www.w3.org/WAI/tutorials/images/decorative/)]
30 | - [ ] Make sure text and background colors contrast sufficiently [[#1](https://accessibility.blog.gov.uk/2016/06/17/colour-contrast-why-does-it-matter/)]
31 | - [ ] Provide ``s that name the site and the specific page [[#1](https://www.w3.org/TR/WCAG20-TECHS/G88.html)]
32 | - [ ] Provide large touch "targets" for interactive elements [[#1](http://www.bbc.co.uk/guidelines/futuremedia/accessibility/mobile/design/touch-target-size)]
33 | - [ ] Use data tables (`
`) for data only, not visual layout purposes
34 | - [ ] Make scrollable elements focusable for keyboard users
35 | - [ ] Do not rely on color for differentiation of visual elements
36 | - [ ] Use the same design patterns to solve the same problems
37 | - [ ] Ensure keyboard focus order is logical regarding visual layout
38 | - [ ] Lazy load large image assets
39 | - [ ] Honour DNT (Do Not Track) header [[#1](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/DNT)]
40 | - [ ] Translate / spell out acronyms the first time you use them
41 | - [ ] Do not hijack standard scrolling behavior
42 | - [ ] Move focus between dialogs and the controls that invoked them
43 | - [ ] Give all form elements permanently visible labels
44 | - [ ] Give grouped form elements group labels
45 | - [ ] Place labels above form elements
46 | - [ ] Provide status and error messages as WAI-ARIA live regions
47 | - [ ] Provide clear, unambiguous focus styles
48 | - [ ] Employ well-balanced, highly legible fonts (not too complex or elaborate)
49 | - [ ] Do not use very thin font faces [[#1](http://www.telegraph.co.uk/science/2016/10/23/internet-is-becoming-unreadable-because-of-a-trend-towards-light/)]
50 | - [ ] Ensure states (pressed, expanded, invalid, etc) are communicated to assistive software
51 | - [ ] Match semantics to behavior for assistive technology users
52 | - [ ] Provide a default language and use `lang="[ISO code]"` for subsections in different languages
53 | - [ ] Make controls look like controls; give them strong perceived affordance
54 | - [ ] Underline links — at least in body copy
55 | - [ ] Make sure all content belongs to a landmark element (``, `