【发布时间】:2019-06-28 13:40:34
【问题描述】:
我有一个嵌套的 3 级导航,在 HTML 中看起来像这样:
<ul class="level-0 top">
<li>
<a>Link</a>
<ul class="level-1 column">
<li>
<a>Header</a>
<ul class="level-3 row">
<li>
<a>Link</a>
</li>
<li>
<a>Link</a>
</li>
<li>
<a>Link</a>
</li>
</ul>
<!-- more 1st, 2nd, and 3rd levels that look like the above -->
</ul>
它的样式是 megamenu:
*Link1* Link2 Link 3
________________________________________________
| Header | Header | Header | Random Content |
| Link | Link | Link | |
| Link | Link | Link | |
| Link | Link | | |
| | Link | Header | |
| Header | Link | Link | |
| Link | | Link | |
| Link | Header | Link | |
| | Link | Link | |
| | Link | | |
| | Link | | |
'------------------------------------------------'
第一层是顶部的链接,它会打开一个下拉菜单。第二级是大型菜单中的“列”。第三层是每列内的“行”,每个包含一个链接列表。想象布局的一个好方法是考虑 Pinterest 的“砌体”布置。
现在,当将 屏幕阅读器 导航到菜单(第二级)时,它自然会显示“包含两个项目的区域”(或此简介的某些变体,取决于您的阅读器),因为它在每列中看到两个列表。然后它会读取每个三级列表,退出列表,退出第一列,然后重复其他列。
这在阅读 HTML 和屏幕阅读器时是合乎逻辑的。你下降一个级别,阅读项目摘要,到达每个项目,重复。
不过……
*Link1* Link2 Link 3
________________________________________________
| Header Header Header | Random Content |
| Link Link Link | |
| Link Link Link | |
| Link Link | |
| Link Header | |
| Header Link Link | |
| Link Link | |
| Link Header Link | |
| Link Link | |
| Link | |
| Link | |
'------------------------------------------------'
菜单的设计方式使得前 3 列看起来不像列。相反,第一到第三列被视为一个包含 6 个链接列表的大区域(假设前三列具有相同的背景,而随机内容具有不同颜色的背景)。
有没有办法告诉屏幕阅读器将第一到第三列读取为“一个包含 6 个项目的区域”,即使 HTML 是在列和行中定义的?还是它已经以合规的方式阅读它?
【问题讨论】:
标签: html accessibility wai-aria screen-readers wcag