--- id: accessibility title: Accessibility permalink: docs/accessibility.html --- ## Why Accessibility? {#why-accessibility} Web accessibility (also referred to as [**a11y**](https://en.wiktionary.org/wiki/a11y)) is the design and creation of websites that can be used by everyone. Accessibility support is necessary to allow assistive technology to interpret web pages. React fully supports building accessible websites, often by using standard HTML techniques. ## Standards and Guidelines {#standards-and-guidelines} ### WCAG {#wcag} The [Web Content Accessibility Guidelines](https://www.w3.org/WAI/intro/wcag) provides guidelines for creating accessible web sites. The following WCAG checklists provide an overview: - [WCAG checklist from Wuhcag](https://www.wuhcag.com/wcag-checklist/) - [WCAG checklist from WebAIM](https://webaim.org/standards/wcag/checklist) - [Checklist from The A11Y Project](https://a11yproject.com/checklist.html) ### WAI-ARIA {#wai-aria} The [Web Accessibility Initiative - Accessible Rich Internet Applications](https://www.w3.org/WAI/intro/aria) document contains techniques for building fully accessible JavaScript widgets. Note that all `aria-*` HTML attributes are fully supported in JSX. Whereas most DOM properties and attributes in React are camelCased, these attributes should be hyphen-cased (also known as kebab-case, lisp-case, etc) as they are in plain HTML: ```javascript{3,4} ``` ## Semantic HTML {#semantic-html} Semantic HTML is the foundation of accessibility in a web application. Using the various HTML elements to reinforce the meaning of information in our websites will often give us accessibility for free. - [MDN HTML elements reference](https://developer.mozilla.org/en-US/docs/Web/HTML/Element) Sometimes we break HTML semantics when we add `
` elements to our JSX to make our React code work, especially when working with lists (`
    `, `