好的网站设计是具备人文气息的,不只仅是视觉的美观,加载渲染速度的快慢。而是使尽量多的人可以使用Web站点,即使他们有或多或少的缺陷。而「无障碍设计」,就是现代Web 开发中一个值得关注的分支,来让咱们开发易访问的内容的网站。它主要体如今如下几点:html
关于WAI-ARIA (Web Accessibility Initiative's Accessible Rich Internet Applications 也就是:Web 无障碍倡议-无障碍富互联网应用) 具体能够看我翻译的:WAI-ARIA basics。git
WAI-ARIA 给浏览器增长了 role 属性,这容许咱们给站点中的元素增长咱们想要的语义属性。 ARIA 的 角色 属性值能够做为地标(Landmark) 来复制 HTML5 元素的语义化(例如 nav tag)。甚至超越HTML5 的语义,给不一样的功能块提供路标(Signpost),例如 search, tabgroup, tab, listbox 等等。github
打开地址: mdn.github.io/learning-ar…web
而后使用VoiceOver 绑定键(你能够在VoiceOver Utility 中设置) + U 访问,而后使用光标或者键盘来选择菜单选项。因为是结构化的内容,你经过键盘上下就能听到对应的标题内容来跳转须要的内容。 你就能看到: chrome
每一块都很分明,作的很差的,Landmarks 直接没有,或者一个页面一个banner 三个 navigation。npm
<input type="search" name="q" placeholder="Search query" aria-label="Search through site content">
复制代码
这样当你聚焦的时候就会VoiceOver 会念出'Search through site content'。浏览器
<input type="search" name="q" placeholder="Search query" aria-labelby="searchLabel">
<span id='searchLabel'>Search through site content</span>
复制代码
内容动态更新是对于无障碍是一个很麻烦的事情,由于早年的网站并无这个困扰,因此 WAI-ARIA 增长一个新的概念:实时区域(live region)。用属性aria-live即可以触发实时区域(role="alert" 也能够),它有四个值:bash
一般来讲 assertive 设置足以让你的更新在显示时按时序读出,所以,若是改变屡次,那么屏幕阅读器也只会念出最后一个改变。post
那么就会有一个问题,若是不断增长子元素,那就会不断的出现提示,增长的子元素的内容。优化
经过添加 aria-atomic="true" 属性告诉屏幕阅读器去读取整个元素的内容做为一个总体来判断是否提示已修改, 而不是里头某个子元素增长删除了。例子以下:
<section aria-live="assertive" aria-atomic="true">
复制代码
以上内容大略的说说了几个重点,至于具体全面的 aria-* 属性/状态, 请看 Definitions of States and Properties (all aria-* attributes) ,关于角色,请看Definition of Roles
Tab 和确认键是HTML 默认实现的无障碍操做,经过对tabindex 的合理使用(并非处处乱用),可让webpage 的操做体验变得更好,另外一方面组合aria-setsize 和 aria-posinset 能最大化给屏幕阅读器提供信息。 tabindex 文档
这是现代复杂 Web 应用的最大问题,为了实现复杂需求会大量使用非语义元素来实现一个控件,对于屏幕阅读器而言是灾难,对于使用者而言页面等于不可用。
role="button"
便可。彼得•德鲁克(Peter F. Drucker)说过这么一句话,那么咱们介绍两款相关的软件用来测量网站对于无障碍的实现程度。
npm install -g the-a11y-machine
a11ym --standards WCAG2AA,HTML https://developer.mozilla.org/
复制代码
而后打开当前目录下的 ./a11ym_output/index.html
,你能够看到它对于总体的分析结果。而后note codes 指向的会是每个Web内容无障碍指南(WCAG)的每个实现细则,你能够就像完成一个个代码风格错误同样逐个根据状况修复它。
这是一款由谷歌可访问性团队开发的谷歌 Chrome Extension。 而后操做如图:
顺带一说,Google 的Audits 功能是基于 Lighthouse 的,关于它能够再写一整篇文章,按下不表。
而后获得的结果会是这样的:
他的评价体系比起a11ym 不可不谓温和。可是根据它给出的信息,咱们仍是能够进行对应的优化。
比起发达国家,国内的互联网技术的发展突飞猛进,可是从大部分的主流网站能够看得出,除开大厂,你们对于无障碍的支持是不够的。但我以为这仅仅是出于不了解,若是不得而知,那么就无从作起,因此咱们更多地说起无障碍技术,推广它,便能让中文互联网世界的无障碍更进一步。
因此像Leonie Watson 说的:
It doesn't have to be perfect, Just a little bit better that yesterday.
推荐阅读: