aria-label 与表单标签

aria-label vs form labels

这两种屏幕 reader 表单技术之间有什么区别吗,一种比另一种更受鼓励:

<label for="titleInput">Title</label>
<input type="text" id="titleInput" name="title" value="">


<div>Title</div>
<input type="text" aria-label="Title" name="title" value="">

第一种方法一直是设置它的方法,但是自从引入了 WAI-ARIA 后,我开始思考是否将 aria-label 与表单一起使用是否比使用 <label for="x"> 更好。

Aria-label 用于辅助功能。如果添加了 Aria-label,在画外音时(MAC 上的 cmd +F5 或 windows 上的 JAWS 机器将读取 HTML 标签的 aria-label 属性中键入的任何内容。此功能对视障用户非常有帮助。阅读此处 https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute

Label 是 HTML 标签,就像 <form> or <h1>..<h6> 等标签一样,当使用标签时它会在 UI 上呈现标签。例如:<Label>ENTER NAME</Label>

根据经验:如果真实元素可以完成这项工作,则使用真实元素。 ARIA 是当没有真正的元素表达语义时或者当你做一些非常奇怪 阻止你使用普通元素时你回退到的东西。

(大多数时候,当你在做一些非常奇怪的事情,你应该停止做那些奇怪的事情。

在这种特殊情况下,两者之间存在一些主要差异。

浏览器不会像使用标签元素 那样将点击目标扩展到 div 元素。单击标签将聚焦输入,单击 div 不会。

您现在有两个标签。 div 和属性在两个不同的地方提供了 相同的 信息。该属性不会替换 div,因此屏幕 reader 将读出 div 文本 与输入关联的标签。

使用 <label>。它专门用于将文本与表单控件相关联。

aria-label 旨在提供屏幕 reader 无法读取的某些内容的文本描述。例如当您使用背景图像而不是使用带有 alt 属性的 <img> 来传达信息时(请参阅我之前关于 weirdness 的注释)。