可访问性的占位符文本最佳做法

时间:2018-02-06 15:26:26

标签: accessibility web-accessibility

以下面的标记为例:

<label for="email">Email</label>
<input type="email" placeholder="foo@bar.baz" id="email" />

<label for="cc">Credit card</label>
<input type="input" placeholder="XXXX XXXX XXXX XXXX" id="cc" />

屏幕阅读器会读取类似“电子邮件字段,foo at bar dot com”,“信用卡X X X X空间X X X X空间......”的内容吗?如果是,我想这不是最好的用户体验,最好避免以这种方式使用占位符。是否有关于如何为用户提供简短提示的指南或示例,旨在帮助用户以易于理解的格式输入数据,适用于所有用户?

3 个答案:

答案 0 :(得分:2)

JAWS和NVDA等屏幕阅读器不会读取占位符文本,只是视觉添加。

但是,如果您以可视方式提供重要信息(例如数据输入格式),则您没有理由不将此信息传达给屏幕阅读器用户。一个好方法是使用屏幕阅读器只有一点文字。使用CSS创建一个类,它可以直观地隐藏文本(屏幕外),并将其弹出到您想要读出的范围内。

我在下面使用了出生日期的示例,因为输入日期的格式可能会有很大差异。信用卡号码和电子邮件地址等标准非常标准,可能并不需要提示。

&#13;
&#13;
.sr-only {
  position: absolute;
  left: -99999px;
  height: 1px;
  width: 1px;
  overflow: hidden;
}
&#13;
<label for="DOB">
  DOB <span class="sr-only">Enter date in the format DD/MM/YYYY</span>
</label>
<input type="text" placeholder="DD/MM/YYYY" id="DOB">
&#13;
&#13;
&#13;

答案 1 :(得分:0)

占位符文本必须被视为纯粹的装饰元素。屏幕阅读器可能无法读取它。

在你的例子中,这是完全可以的。屏幕阅读器用户完全知道电子邮件地址的格式,并且不想以“除前例为例”前例,例如前例。而不是“输入您的信用卡号码”(请注意,当您的卡号为13位时,无法将4乘4分组。)

如果你真的需要提示,你必须将它插入标签:

有关W3C网页的更多信息:

答案 2 :(得分:0)

格式化提示适用于所有用户,无论是否视觉障碍。在字段下面有一个示例,并使用aria-describedby与字段相关联,这就是我通常的做法。

<label for="email">Email</label>
<input type="email" id="email" aria-describedby="format"/>
<span id='format'>Format: foo@bar.baz</span>