我正在设计一个表单like this,其中该行中标签的底部以直线对齐,并且该行中输入字段的顶部以直线对齐。
Owing to some restriction in CSS(我们无法修改高度,因为它会有所不同),我要将表单元素的标签放在第一行,然后将它们各自的输入字段放在下一行(这样输入字段位于其标签下方。)
我测试了键盘&使用此html结构的Tab键顺序,它工作正常。 我想知道JAWS或任何其他屏幕阅读器中的阅读顺序是不正确的。
任何改变阅读顺序的方法的建议 要么 是否可以继续使用这个html结构,因为Tab键顺序是anywys工作吗?
答案 0 :(得分:1)
在HTML结构中,每个输入都应以其标签开头,而不是在一行上有标签而在下一行上有输入。
但是,你有一个非常特别的显示器,你支持IE7(没有display: table
),所以我认为你最好使用一个表。
如果您考虑到这些因素, 可以无障碍地执行此操作:
为表单使用基本布局表,并在表标记上包含一个额外属性:
<table role="presentation">
这意味着该表不是从可访问性角度来看的表。 (我只在支持IE7布局时推荐这个!)不要使用<th>
标签。
屏幕阅读器填写时的主要内容是显式的标签输入关系。
<label for="input_id">My label</label>
<input type="text" id="input_id">
您可以通过单击标签来判断它是否有效,它应该将光标放在输入中。
但是,您的阅读视图需要采用不同的方法。当您在顶部有一行与下面的一行项相关的项时,这就是数据表的定义。因此,当页面被保存(或者它转换为阅读视图)时,请使用数据表,例如:
<table>
<tr>
<th>Customer account number</th>
[other <th>s]
</tr>
<tr>
<tr>
<td>023456353434</td>
...
当屏幕阅读器读出时,它将在内容(023 ...)之前读取“标题”(例如客户帐号)。所以变化是:
<th>
s 必须说这是一个黑客,它不是特别强大,我当然不会推荐它用于响应式网站。纯粹是必需的布局和浏览器支持导致了这一点。
答案 1 :(得分:0)
没有查看你的标记就不可能准确地说出来了,但听起来你有一堆输入然后是一排标签....这对于可访问性来说并不理想。
您可以将表单控件嵌套在label元素中,将表单控件的显示设置为block以达到相同的效果,同时还提高了可用性和可点击性。