html - 我需要在可见性被隐藏的元素上使用 aria-hidden 吗?
问题描述
我的页面上有以下标记:
<body>
<div class="modal" role="dialog">
...
</div>
<div class="page">
<div class="content">
...
</div>
</div>
</body>
所以这基本上是模态对话框的标记以及我的页面和内容。默认情况下,模式具有该visibility: hidden
属性。现在,我对这个关于可访问性的特定页面有以下疑问:
- 模态还需要
aria-hidden="true"
吗? - 当模式打开(使用 JS)时,它
visibility
被设置为visible
. 我也使用 JS 给aria-modal
它添加属性。此时,我应该将 添加aria-hidden="true"
到我的页面 (.page
) 吗?因为如果打开了模式,屏幕阅读器应该无法访问页面的内容。
任何意见是极大的赞赏。
解决方案
我已经链接到一些帖子,这些帖子将更详细地回答您的问题,但要快速回答:
aria-hidden=true
如果模态已经隐藏,则不需要它,visibility: hidden
因为这也会将其从可访问性树中删除。请参阅此博客文章:https ://www.scotohara.me/blog/2018/05/05/hidden-vs-none.html是的,如果你不是用 css 隐藏它,你应该添加
aria-hidden=true
到你的,而只是用 like 隐藏它。来自https://www.w3.org/WAI/GL/wiki/Using_ARIA_role%3Ddialog_to_implement_a_modal_dialog_box的 WAI 文档说明如下:.page
z-index
为了确保在移动设备上正确处理焦点,还建议在显示对话框后通过将其 aria-hidden 属性设置为 true 来掩盖页面背景(即除了模式自定义对话框的内容之外的所有页面元素)(并返回关闭对话框时为 false)。请注意,此屏蔽应在脚本将焦点移至对话框后发生。
推荐阅读
- r - 将栅格中的值替换为另一个栅格中的值
- python - Django:省选择字段依赖于州选择字段
- c# - 如何在 UWP 中设置 CommandBarFlyout 的主题?
- timestamp - 在 PowerBI (Desktop) 中,如何对每天(或每周或每月)的时间戳进行分组?
- c# - C# 中响应式数据轮询的有效设置
- visual-studio-code - 如何从 VSCode 中的降价文档链接到编辑器中的另一个文件
- java - 如何使用 mapstruct 或 modelmapper 从一个对象递归更新嵌套对象?
- javascript - 如何在javascript中的方法内传递动态变量?
- javascript - 循环遍历一个数组并从最小值到最大值比较两个值
- windows - 通过 Powershell 打开和更改 Windows 设置