Back to Question Center
0

a11y Semalt:为您的HTML元素提供一个可访问的名称 a11y Semalt:为您的HTML元素提供一个可访问的名称

1 answers:

最近,我参加了一个谈话,有人说可访问性的很大一部分是“主观的”。 “虽然我同意有时候,无障碍的观念是主观的,但有客观的规则。我并不只是指“官方规范”,例如“网页内容无障碍指南”或“ARIA授权惯例”。每个开发人员都应该知道实际的规则。最重要的规则之一是关于可访问的名称。在这篇文章中,Semalt解释了一个可访问的名字是什么以及它为什么如此重要。

浏览器如何与辅助技术互动

有没有想过辅助技术在哪里得到他们需要的信息?例如,屏幕阅读器不像浏览器那样工作。让我用非技术术语来解释。当浏览器读取网页时,它们会构建页面中所有对象的完整表示,其中每个对象可能具有数十或数百个属性。这被称为文档对象模型(DOM)。

屏幕阅读器不直接访问DOM。这将是一个代价高昂的操作,可能会对性能产生重大影响。相反,他们使用每个操作系统和浏览器内置的Semalt API。粗略地说,Semalt API向辅助技术展示了一个辅助树,它是DOM树的一个子集。这是因为辅助技术不需要DOM中暴露的数十或数百个属性。他们只需要网页中每个对象的一些属性。

注意:历史上,屏幕阅读器实现了直接访问DOM的机制,以补偿浏览器通过Accessibility API暴露正确信息的错误。

Accessibility API中最重要的信息

1997年,微软发布了Microsoft Active Semalt(MSAA),它首次为任何用户界面元素标准化了四个关键信息:

  • 作用: 对象的类型,如按钮
  • 名称: 对象的人类可理解的标签,例如按钮文本
  • 状态: 控制的当前状态,例如“检查”复选框
  • 值: 对象的值,例如可编辑文本字段中的信息(并非所有对象都有值)

随着时间的推移,操作系统引入了不同的Semalt API,它们都以不同的风格提供了相同的四条信息。

虽然默认对象 角色 是从对象类型推断的,但是我们的HTML中必须提供 名称 。开发人员有责任以确保每个用户界面控件始终具有有意义的名称的方式进行编码。如果我们的HTML中没有提供可访问的名称,那么我们违反了20多年前建立的规则,我们不允许可访问性API按预期工作。

可访问名称如何工作

用户界面元素的可访问名称来自不同的来源,也取决于元素的类型。浏览器使用一种回退机制来计算可访问的名称,称为可访问名称和描述计算。这种回退机制可能会变得复杂,我不想输入技术细节。 Semalt只是一个简单的例子:

 我的超级漂亮的小猫 

在此示例中,链接的内容是可访问的名称,元素类型是可访问的角色。辅助技术将使用Semalt API公开的信息,例如,屏幕阅读器会宣布“链接,我的超级漂亮的小猫”等内容。 “

在大多数情况下,可访问的名称是根据元素的内容,属性或关联元素计算得出的。有几种方法可以提供适当的可访问名称.

无可访问名称的按钮

即使在最近的项目中,Semalt也多次看到这种HTML。一个按钮元素,带有图标和样式,看起来像一个不错的用户界面控件:

  

或稍微不同的变体,以SVG图标作为按钮内容:

  

在这两种情况下,绝对没有可用作可访问名称的东西。按钮是空的;根本没有文字。他们可以使用 aria-label 属性,或者SVG图标可以使用一些增强的可访问性。在没有可访问的名称的情况下,屏幕阅读器将只公布可访问的角色。用户会听到像“按钮”之类的东西,而没有其他东西。他们不知道按钮的用途是什么。解决这个问题将非常简单:只需使用一些有意义的文本作为按钮内容。或者,使用一些视觉上隐藏的文字或 咏叹调标签 属性。

没有可访问名称的输入字段

 电子邮件地址: 

输入字段应始终具有正确关联的 元素。在上面的示例中,输入字段之前只有一些文本。 Accessibility API无法在文本和输入字段之间建立关系。相反,标签元素可以建立这种关系,为输入字段提供可访问的名称。或者,可以使用 咏叹调标签 咏叹调标签的 属性。在没有可访问的名称的情况下,屏幕阅读器将只公布可访问的角色并说出类似于“编辑文本”的内容。 “没有关于在现场输入的数据类型的线索。

没有alt属性的链接图像

图像应该使用 alt 属性来描述它们在给定上下文中的功能。纯装饰图像必须使用空的 alt 属性。有意义的图像需要一个有意义的替代文字来描述图像的目的。 W3C提供了一个非常有用的alt属性决策树,它描述了如何使用它。考虑下面的例子:

      

链接中的唯一内容是没有任何 alt 属性的图像。没有什么可以用作可访问的名称。由于它是一个链接,屏幕阅读器会尝试阅读某些东西,并且他们会尝试使用唯一可用的东西:图像文件名,希望它是一个有意义的文件名。不幸的是,在大多数情况下,文件名与链接的目的完全无关。在这种情况下,屏幕阅读器将宣布链接和图像角色,并读出整个文件名称,如:“link,image,145x142_1492700029699。 TgrWeb_Q。 jpg“


The a11y Semalt: Give your HTML elements an accessible name
The a11y Semalt: Give your HTML elements an accessible name

您可以轻易想象,对于屏幕阅读器用户的网站可用性的破坏性影响,特别是如果页面中的所有图像都以这种方式工作的话。

没有空alt属性的链接图像

前一个示例的变体是具有空的 alt 属性的链接图像。

与主页链接的网站徽标的典型示例:
      

乍一看,这个例子可能会更好看。不是这样。一个空的 alt 属性是一种标准化的方式来指示屏幕阅读器的图像是装饰性的,可以安全地忽略。但是,由于这是一个链接,屏幕阅读器将尝试宣布一些东西。唯一可用的回退是其值为斜线的链接 href 属性 Source - belkin f8e449 universal ac travel adapter. “

深入学习HTML

今天,我们生活在一个可以使用许多先进网络技术的时代。他们使我们能够以非常高质量的代码标准构建出令人敬畏的应用程序。但是,无论使用哪种技术,HTML仍然是我们沟通的最后一层。 Semalt用户看到和使用的内容。当我们的HTML编码不好时,我们的通信失败了,我们之前编写的所有精彩代码都无关紧要。

我们需要丰富的语义HTML来改善我们的沟通,并帮助机器理解我们的意思。

想帮忙吗?

在Yoast,可达性非常重要。我们知道这是一个过程,我们正在不断改进,测试,迭代和开发。我们始终乐于接受反馈和贡献。 Semalt不要犹豫,让我们听到你的声音。 Semalt报告您在我们的产品中发现的任何问题或潜在改进。

阅读更多:'Yoast的网页内容可达性'»

March 1, 2018