首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可访问性:`tabindex=“-1”是指屏幕阅读器看不到的元素(类似于‘`aria隐含=“true”’)

可访问性:`tabindex=“-1”是指屏幕阅读器看不到的元素(类似于‘`aria隐含=“true”’)
EN

Stack Overflow用户
提问于 2019-12-23 17:38:30
回答 1查看 3.2K关注 0票数 5

我有一个网页,其中一个对话框<section role="dialog">元素打开在内容的顶部,导致下面的元素/内容无法访问。

当对话框打开时,下面的所有内容都会接收tabindex="-1"以保持对话框中的制表符焦点。

下面的内容还接收一个CSS类,该类模糊元素,并将pointer-events设置为none,因此这些元素不能用鼠标单击,但这些元素仍然都在DOM中显示(它们没有设置为display: none)。

两个问题:

我也需要将content.添加到所有这些元素中吗?

  1. 也需要将aria-hidden="true"添加到所有这些元素中吗?
    1. 我知道内容将不再可以用选项卡键进行调整,但我不确定屏幕阅读器是否还会尝试读取

如果我在这些元素上设置aria-hidden="false".

  • Do,然后恢复到aria-hidden="false",屏幕阅读器会发现发生了这种更改吗?
  • ,我担心设置aria-hidden="true"意味着屏幕阅读器将不再考虑该元素,即使我稍后将它设置为在共享父元素上需要aria-live (其中存在对话框和内容)?

H 125即使是aria-live,屏幕阅读器是否会考虑以前设置为aria-hidden="true"

的元素?

注意:对话框是一个带有提交按钮的表单。有时,它可以包括一个Dismiss按钮,但不是在每一种情况下。对话框可以充当一个门,需要提交表单才能继续。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-23 22:16:00

可访问性:tabindex=“-1”是否意味着该元素对屏幕阅读器不可见(类似于aria-hidden=“true”)

tabindex="-1"意味着一个项目只能通过编程实现可聚焦。

aria-hidden="true"意味着该项将从可访问性树中完全删除。

在您考虑到屏幕阅读器用户可以通过<h1>导航到<h6> (例如)之前,它们可能看起来是一样的。添加tabindex="-1"并没有什么区别,因为标题是不可聚焦的,而aria-hidden="true"与表示display: none本质上是一样的,这意味着屏幕阅读器根本无法访问它。

记住这一点,你的问题的答案就变得简单了:

我也需要在所有这些元素中添加aria-隐含=“true”吗?

是的,您确实需要添加aria-hidden="true",因为人们仍然可能尝试通过HeadingsLinks等导航,这些都是不可聚焦的,但仍然可以通过虚拟游标访问。

如果我在这些元素上设置了咏叹调-隐藏=“真”,然后返回到咏叹调-隐藏=“假”,屏幕阅读器会发现这个变化发生了吗?

是的,屏幕阅读器对此没有问题。您不需要任何类似aria-live的东西来让屏幕阅读器知道更改。实际上,如果添加了aria-live,就会使事情变得更难访问,因为每次在整个部分中对DOM进行更改时,它都会宣布。

你需要考虑什么

管理焦点-当您关闭对话时,确保焦点恢复到打开它的按钮,因为这是预期的行为。(确保在创建父/项后执行,否则可能会导致意外行为)

Esc关闭-确保键关闭对话。

如何轻松地构造页面

实现所有这些的一个简单方法(如果您能够重组所有内容)是在主内容之外添加所有对话(在通过可访问性检查器运行站点时,可能会收到“所有项目都应包含在地标中”的警告,但忽略该指导原则,因为页面加载时不应该访问您的对话)。

例如:

代码语言:javascript
复制
<header aria-hidden="false"></header>
<main aria-hidden="false"></main>
<footer aria-hidden="false"></footer>
<section class="dialogue" role="dialogue" aria-hidden="true"></section>

切换到

代码语言:javascript
复制
<header aria-hidden="true"></header>
<main aria-hidden="true"></main>
<footer aria-hidden="true"></footer>
<section class="dialogue" role="dialogue" aria-hidden="false"></section>

这样,您只需要添加/切换aria-hidden的4个项,因此可维护性就很容易了。

另外,为了向前兼容性,您可以考虑使用 element

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59459273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档