译文 对无障碍网页应用(ARIA)的选择

//本文编辑格式为Markdown,译文同时发布在众成翻译

对无障碍网页应用(ARIA)的选择

让网站对每个人都能访问是一件相当艰难的工作,尤其是在我们使用自定义标记解决方案(custom markup solutions)的那些日子。我很高兴#a11y(可访问性的简称)的话题最近获得了越来越多的关注,因为#a11y没有什么好的,但是正如James Williamson今天发布的twitter:

我们对提高可访问性最大的误解是认为那是在帮别人,但是你错了,这是你的职责。(The biggest misconception about accessibility is that by adding it you‘re doing somebody a favor. You‘re not, you‘re doing your job.)

为了使你的网站更便于访问,你可以使用 WAI-ARIA(无障碍网页应用)来提供更多语义化的信息,去支持一些访问辅助技术。

WAI-ARIA背后的想法很伟大,但不幸的是它可能有超乎想象的使用难度。最近,我遇到了一个分页部件(pagination component)的例子,并且我在其中发现了一个常见的错误,我想在这篇文章中讨论一些相关的细节。

如何不(!)去使用 aria-selected

所以让我们一起来看如下的例子:

<nav role="navigation" aria-label="Pagination Navigation">
  <ul>
    <li>
      <a href="/page-1" aria-label="Go to Page 1">1</a>
    </li>
    <li>
      <a href="/page-2" aria-label="Current Page, Page 2"
         aria-selected="true">2</a>
    </li>
    <li>
      <a href="/page-3" aria-label="Go to Page 3">3</a>
    </li>
  </ul>
</nav>

这个例子中的许多元素都用aria-label属性进行了适当的标记。这是一件好事,因为一个链接如果它只包含一段数字的话,它无法给盲人提供足够多的信息。对于盲人们来说,他们很难理解全是数字的链接背后的意义。

我想深入分析的是这第二个链接。它有一个aria-selected被设置成true.这是ARIA的一个缺陷—————它很容易被弄错。当你想要将正确的页面标记为selected时,用它似乎有意义,但事实上这样做并不对,对于像VoiceOver之类的屏幕朗读辅助器并不起作用。

为了理解为什么这样做是不行的,我们需要理解ARIA中角色(role)的概念。

ARIA中“link”及其含义

WAI-ARIA 角色模型 是一种向辅助技术提供有关如何处理给定元素信息的方法。

在我们的例子中,我们在处理一个锚点元素(anchor),浏览器会自动将它与“link”相关联。标准的HTML元素通常有正确的角色关联。浏览器知道这些元素什么意思,并且能以最好最方便的方式对待它们。

标准的HTML元素能呈现包括适当的焦点处理、对键盘和点击交互的反应。

标准标记默认情况下是可以访问的.

所以,让我们看一下“link”的定义 :

对内部或者外部资源的交互式引用,在被点击的情况下,会导致用户代理导航到该资源。(An interactive reference to an internal or external resource that, when activated, causes the user agent to navigate to that resource.)

可能对你而言,这个定义中并没有什么新的东西,但是在它的右边,你会发现关于支持状态以及性能的信息,这通常是通过HTML属性来设置的。

使用这些你可以向辅助技术提供额外的信息。“link”的定义列出了一系列的ARIA属性,你可以使用像aria-label,aria-hidden或者aria-disabled等。

aria-selected 并不在其中。

那么,什么才是正确的用法呢?我们一起来看它的规范。

aria-selected的含义

aria-selected定义包括:

此属性用于单选以及多选部件。(This attribute is used with single-selection and multiple-selection widgets.)

所以关于使用aria-selected必须有一些选择。

在处理选择时,我首先想到了选择元素以及单选按钮。另一方面,链接并不提供任何选择交互。

事实上一些“Pagination Navigation”(分页导航)内的链接在这个例子中并不起效。当你点击其中的一个链接通常是加载下一页,这种情况,这里的分页并没有真正的选择交互。

aria-selected的实际用例

aria-selected 支持许多的role,包括 "tab",这对你来说可能是新的,但你我打赌你知道你从中期待什么。如果你看这个例子 你将会看到“tab”的用法和aria-selected背后确切的推理。

<ul class="tablist" role="tablist">
  <li id="tab1" class="tab" aria-controls="panel1"
      aria-selected="true" role="tab" tabindex="0">Prices</li>
  <li id="tab2" class="tab" aria-controls="panel2"
      role="tab" aria-selected="false" tabindex="0">Features</li>
</ul>

这个例子展示了一个"tab component"(标签组件),它是由许多控制着可见的内容的列表项组成。这列表本身有“tablist”的role,并且每个列表项都有“tab”来确保辅助技术知道去处理什么。

列表项在被聚焦的状态下能对点击和键盘导航做出反应。这是通过tabindex以及一点Javascript。这个组件总体上是易访问的,并且为了向用户提供关于当前哪一个tab正被选择的附加信息,每一个tab的aria-selected属性都是被设定了的。屏幕阅读器现在已经能够识别出“selected”,因为它们能理解元素的“tab”属性。

还有更多的内容,这里我就不细展开了(你能在这个例子中找到解释),但是要建立标签的可访问性并不像一眼看上去的那样琐碎。

要记住最重要的事情,aria-selected 能给选择交互提供额外的信息 像这个例子中当前的标签。

开发者工具来救援

正如你所见,处理WAI_ARIA是棘手的,但是幸好这里有许多解决的办法。例如,谷歌提供了一个非常漂亮的Chrome 拓展 ,这可以帮助你发现这样的错误。要检查你的网站,你可以在开发者工具中轻松运行辅助功能审核。

除了可访问性审核以外,这个拓展还通过可访问性面板扩大了元素检查。在那里你可以看一下应用的属性、角色,还可以看一下辅助技术是如何大声朗读出这个元素的。这确实很有帮助,实际上我经常使用它。

总结

可访问性处理起来可能比较麻烦,但是WAI_ARIA的规则值我们得去读,在使用了合适的工具后,我想我们可以使网站变得更易访问。

我希望你能喜欢这篇文章,如果你有什么问题欢迎你能告诉我。

编辑

结果,分页中当前页面例子的正确属性是WAIARIA 1.1中定义的 aria-current属性. 不幸的是,它在写的时没能很好的支持。

时间: 2024-08-28 12:18:08

译文 对无障碍网页应用(ARIA)的选择的相关文章

无障碍网页设计(WCAG2.0)

无障碍化是指无论健全人还是残疾人,年轻人还是老年人都可以平等地获取互联网上的信息和服务.无障碍化网站建设不单可以增加网站的受益群体,更是一个有情怀.有担当的互联网企业的责任,也是一个互联网从业人员应该关注到的一个方面. 无障碍化受益人群: 普通人 普通网站用户:文化背景和习惯与主流用户不同的用户:老年人或儿童等用户:无障碍化可使得用户更轻松地使用网站服务,降低使用.学习和理解的成本. 视力障碍用户 主要包括盲人.低视力.色盲.色弱等用户.针对这部分用户所做的信息无障碍化是最通用和最具有代表性的,

WAI-ARIA无障碍网页应用属性完全展示

一.你至少应该知道ARIA是什么东西! WAI-ARIA指无障碍网页应用.主要针对的是视觉缺陷,失聪,行动不便的残疾人以及假装残疾的测试人员.尤其像盲人,眼睛看不到,其浏览网页则需要借助辅助设备,如屏幕阅读器,屏幕阅读机可以大声朗读或者输出盲文. 而ARIA就是可以让屏幕阅读器准确识别网页中的内容,变化,状态的技术规范,可以让盲人这类用户也能无障碍阅读! 二.为什么需要ARIA? 回答标题问题前我先问其他几个问题? 如何让盲人用户知道当前浏览区域就是网站主导航? 如果让盲人用户知道点击某个按钮后

WAI-ARIA无障碍网页资料

一.ARIA是啥? WAI-ARIA指无障碍网页应用.主要针对的是视觉缺陷,失聪,行动不便的残疾人以及假装残疾的测试人员.尤其像盲人,眼睛看不到,其浏览网页则需要借助辅助设备,如屏幕阅读器,屏幕阅读机可以大声朗读或者输出盲文.而ARIA就是可以让屏幕阅读器准确识别网页中的内容,变化,状态的技术规范,可以让盲人这类用户也能无障碍阅读! 虽然HTML5的出现大大增强了网页的可访问性和无障碍阅读,但是,其不是万能的,例如无法让盲人知道模拟控件的类型等.所以ARIA才显得更加重要. 其次,ARIA规范一

无障碍网页应用技术了解

一.概述 引自下百度百科的定义: WAI-ARIA, 是Web Accessibility Initiative - Accessible Rich Internet Applications 的缩写,指无障碍网页应用技术.她主要解决的一个问题:让残障人士能无障碍地访问网页上的动态内容. 概括性的描述下就是 ARIA是W3C的一个独立规范,帮助Web应用程序和Web页面变得更具可访问性 ARIA主要是为了提升网页的可用性,网页对残疾人士的无障碍化 HTML5已经开始使用ARIA,并且W3C发布的

Bootstrap学习遇到的role属性--- 无障碍网页应用属性

以前接触过Bootstrap,但也只是仅仅接触,现在重新学习下,今天看到一个例子中的属性有一个role, 查阅资料发现这个是--WAI-ARIA无障碍设计属性: 通俗说是该设计为了一些盲人,失聪,残疾人士而设计的: 深入了解: http://www.zhangxinxu.com/wordpress/?p=2277 --感慨: 大神整理出来的东西好全..... Ps: https://w3c.github.io/html/ w3c html -->   3.2.7.4. Allowed ARIA

调试手机上网页 (断点 console timeline 选择dom)

用手机看网页,越来越多,手机app套个webview的也很多,那该如何调试手机上的页面了?比如 断点,选dom,console,控制台输出,查看内存,== 嗯,万能的的chrome和safari还是帮我们解决了这些事情 android下调试手机上的网页(断点,查看修改dom,console输出,timeline,===) ios下调试手机上的网页 遇到的一些问题 android下调试手机上的网页(断点,查看修改dom,console输出,timeline,===) 一些说明 这个方案是chrom

使用ARIA角色增强可访问性

ARIA角色,关系,状态和属性可用于WEB应用定义出能够被屏幕阅读器这样的辅助技术理解的工作方式. 因为学习到了这个技术,所以好不容易搜索到类似的信息加以收藏.以下内容转载自张鑫旭学长的博客:http://www.zhangxinxu.com/wordpress/2012/03/wai-aria-%E6%97%A0%E9%9A%9C%E7%A2%8D%E9%98%85%E8%AF%BB/ 一.你至少应该知道ARIA是什么东西! WAI-ARIA指无障碍网页应用.主要针对的是视觉缺陷,失聪,行动不

无障碍阅读

WAI-ARIA无障碍网页应用属性完全展示 by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2277 一.你至少应该知道ARIA是什么东西! WAI-ARIA指无障碍网页应用.主要针对的是视觉缺陷,失聪,行动不便的残疾人以及假装残疾的测试人员.尤其像盲人,眼睛看不到,其浏览网页则需要借助辅助设备,如屏幕阅读器,屏幕阅读机可以大声朗读或者输出盲文. 而ARIA就是可以让屏

有关网页渲染,每个前端开发者都该知道的那点事

[编者按]其实,有关网页渲染的文章很多,但是相关信息比较分散,且论述并不是很完整.如果要想对这个主题有个大致的了解,我们还得学习很多知识.因此,Web开发者Alexander Skutin 决定写一篇文章.他相信,这篇文章不仅能帮助初学者,也能对那些想要刷新知识结构的高级前端开发者有所裨益.原文地址 译文如下: 网页渲染必须在很早的阶段进行,可以早到页面布局刚刚定型.因为样式和脚本都会对网页渲染产生关键性的影响.所以专业开发者必须了解一些技巧,从而避免在实践的过程中遇到性能问题. 这篇文章不会研