一、Accessibility

1. Why Accessibility

  • Web Accessibility(网络无障碍辅助)用于创建每个人都能使用的网站的设计
  • Accessibility 的支持是辅助技术正确解读网页的必要条件
  • React 完全支持构建 accessible 网站,通过使用标准的 HTML 技术

2. 标准和指南

  1. <input
  2. type="text"
  3. aria-label={labelText}
  4. aria-required="true"
  5. onChange={onchangeHandler}
  6. value={inputValue}
  7. name="name"
  8. />

3. 语义化的 HTML

  1. import React, { Fragment } from 'react';
  2. function ListItem({ item }) {
  3. return (
  4. <Fragment>
  5. <dt>{item.term}</dt>
  6. <dd>{item.description}</dd>
  7. </Fragment>
  8. );
  9. }
  10. function Glossary(props) {
  11. return (
  12. <dl>
  13. {props.items.map(item => (
  14. <ListItem item={item} key={item.id} />
  15. ))}
  16. </dl>
  17. );
  18. }
  19. function Glossary(props) {
  20. return (
  21. <dl>
  22. {props.items.map(item => (
  23. // Fragments should also have a `key` prop when mapping collections
  24. <Fragment key={item.id}>
  25. <dt>{item.term}</dt>
  26. <dd>{item.description}</dd>
  27. </Fragment>
  28. ))}
  29. </dl>
  30. );
  31. }
  32. function ListItem({ item }) {
  33. return (
  34. <>
  35. <dt>{item.term}</dt>
  36. <dd>{item.description}</dd>
  37. </>
  38. );
  39. }
  • 语义化的 HTML 是 web 应用中 accessibility 的基础。使用各种 HTML 元素强化我们网站中的信息含义可以让我们获得 accessiblity,参看 https://developer.mozilla.org/en-US/docs/Web/HTML/Element
  • React 的 Fragments 能够将多个元素组合起来,如果它上面不需要加属性,可以使用简短语法

4. Accessible 表单

  1. <label htmlFor="namedInput">Name:</label>
  2. <input id="namedInput" type="text" name="name"/>
  • 每个 HTML 表单控件,比如