【发布时间】:2022-08-06 23:54:42
【问题描述】:
根据WAI guidelines for tabs,应该在每个包含标签内容的元素上设置角色tabpanel,然后将其触发标签的aria-controls值设置为容器的ID。
这适用于所有选项卡都包含在 DOM 中并且仅使用 CSS 隐藏的情况。
但是,在我的应用程序中,我只使用 JavaScript 将当前选择的选项卡的内容添加到 DOM。这意味着 DOM 中只有一个 tabpanel,所有其他选项卡的 aria-controls 值将设置为不存在的 ID,我怀疑这将是一个好习惯。
所以现在我想知道:我应该完全设置 tabpanel 角色,还是应该只从容器上的选项卡中设置aria-controls,最终在添加aria-live=\"polite\" 和aria-relevant=\"all\" 时显示当前选择的任何选项卡还是这种情况有更好的做法?
-
我想知道为什么你不能已经包含容器及其 ID,而只是将其内容添加到 DOM,而不是容器本身?您是否通过 Fetch 检索内容?
-
包括处于空状态的容器也是我的一个想法。内容是使用带有 if..else if.. 等的 React 有条件地渲染的,因此容器已经存在会导致在每次渲染时运行更多的比较操作。这些操作在计算上并不昂贵,但不这样做可能是过早的优化@Andy
-
我认为问题的标题不适合问题,这完全是关于
aria-controls属性。你怎么看? -
好吧,问题还在于将 tabpanel 角色放置在哪里(如果有的话),而不仅仅是 aria-controls
标签: javascript html tabs accessibility