我正在现有的html布局上实现ARIA地标角色。我需要的代码越少越好。我找到的所有例子都使用整个容器的地标。 例如。
<div id="content" role="main">
<p>....</p>
<ul>...</ul>
</div>
在我的模板中,并不总是有一个容器围绕着我不想标记为ARIA地标的内容。有时,对于实现而言,更容易,不是标记整个容器,而是仅在相关内容的开头设置标记。
所以它看起来像这样:
<div role="main"></div>
<p>....<p>
<ul>...</ul>
从语义的角度来看,屏幕阅读器或其他软件并不确切知道内容何时结束或者可能认为内容为空。这可能是个问题吗?
我用JAWS屏幕阅读器测试过它,它的行为似乎相同。 JAWAS只寻找地标的开始。 这是禁止的吗?或者我可以这样使用它吗?
答案 0 :(得分:0)
嗯,这里有几件事情。
首先,虽然对于屏幕阅读器而言,所有人都表现得很好并且行为方式相同,但我的经验是,它更像是浏览器之战,所以使用role =“main”会变得不同不同的读者,不一定对你有所帮助。
顺便说一句,你是对的 - 就内容何时结束而言,任何角色属性都没有得到认可,而且到目前为止,我所见过的每个人都支持ARIA(并且只有少)。
最后,我的建议 - 我认为你应该使用不同的角色。区域角色更通用,但仍然可以帮助用户指定重要内容的位置。另一方面,如果你想保持它非常通用并且跨屏阅读器可用,那么完全删除角色概念并使用隐藏的h2标头标记,该标记表示你想要调用它的任何内容。虽然它并不华丽,但它确保有效,而且a11y社区中的任何人都不会对此大肆宣传。
所以就是这样,使用像region这样的通用角色来标记它,或者更好的是,完全废弃角色的想法并返回到样板h2标签以获得统一的兼容性。
答案 1 :(得分:0)
同意,它只是标志着内容的开始。既然如此,为什么不把role =“main”放在第一个元素上,而不是创建一个空div,你会考虑启动主要内容?在上面的示例中,这将是<p>
标记。
可以使用role =“main”的另一种方式是为“跳到主要内容”链接提供锚点。这也支持将角色放在<p>
标签上的方法。
简而言之,如果他们使用跳过链接或使用辅助技术中的捷径,您希望他们在哪里跳转?我只看到增强导航的收益,它被认为是一个“里程碑”的角色......这对我来说,提供了一个里程碑。
答案 2 :(得分:0)
我绝不是WAI-ARIA的专家(尽管最近学习更多),但我的理解是读者确实理解了包含在角色标记区域内的内容,而不仅仅是关于标记的位置地区开始。
此外,引用here:
应用地标的最重要规则可能是确保所有内容都位于具有里程碑意义的区域,以确保没有内容成为孤儿。通过这种方式,屏幕阅读器用户可以安全地使用地标导航而不会遗漏内容。
要做到这一点,您可能需要修改模板,而不是希望。