ARIA :如何专注于我想要的每一个元素?
ARIA : how to focus on every element I want?
我正在尝试通过 WAI-ARIA 和所有这些东西学习可访问性,但我真的迷路了,我去了 W3C 和 MDN 上的官方文档,但无法准确了解如何继续。
这是我的网站(不要介意左上角的蓝色和红色的东西,它是 NVDA 的焦点)。
我还不知道我是否在正确的轨道上,如何继续以及它是否是好方法,但我希望在输入文档时,当我按 TAB 键时,它会专注于标签,当我再次按 TAB 时,它会下降到 header,所以这里是 navbrand,然后是 navmenu,当我在 navmenu 上再次按 TAB 时,它会下降到它。事实上,我想要一种能够专注于“每个”重要部分的制表导航(这里:header,主要,页脚,主要的每个部分,部分的每个卡片,每个部分的每个文本卡等...)
为了让您直观地了解正在发生的事情,当我在文档的根目录并按下 TAB 键时,它将直接进入导航的第一个 link。
有人可以照亮我的路吗?我的计划好不好?如果是,如何进行? (即使不好,如何进行?)
非常感谢您的宝贵时间。
N.B.: 我听说使用 tab-index > 0 并尝试 tab-index = 0 甚至 -1 是不好的,但它不起作用,我不知道是否这是否是不好的做法,因为可能会破坏 DOM 命令或者我不知道...
一般来说,如果您使用语义 html(意思是当您有 table 时使用 <table>
元素,当您有列表时使用 <ul>
, <h2>
当你有标题时,等等),那么你不需要任何 ARIA 属性。其实the first rule of ARIA就是不使用ARIA。
ARIA 应该只用于填补语义 html 不可用或有理由不能使用语义 html 的空白(例如出于样式目的,您必须使用 <div>
和 CSS 而不是原生 <button>
).
但是,您的大部分问题都是关于 tabindex
,从技术上讲,这不是 ARIA 属性。 Tabindex 已经存在很长时间了。 doc on tabindex解释了4种类型的值:
- 没有价值
- 负值
- 0 值
- 正值
除非您需要,否则我不会解释差异,因为在您的情况下,您根本不需要 tabindex
。您不想让 non-interactive 元素键盘可聚焦。您提到将焦点移动到 header、页脚、主要内容等。None 这些元素是交互式元素,因此它们不应获得焦点。
如果您的菜单正在使用链接 (<a>
) 或按钮 (<button>
),那么它们已经可以通过 tab 键和tabindex
不需要。
when entering in document, that when I press TAB key, it focuses on the tag and when I press TAB again, it goes down into the header
我不确定你说的“关注标签”是什么意思。
在您的屏幕截图中,如果使用的是真实链接,则“自然”Tab 键顺序为:
- 获取
- 产品
- 服务
- 联系方式
- Découvir ce 服务
- Découvir ce 服务
- Découvir ce 服务
而且你不需要任何额外的代码就可以工作。
听起来您需要的是一本关于键盘辅助功能的入门读物。
Tab 键的正确行为是将焦点移动到网页的交互部分(例如按钮、链接、表单输入、等)。
Tab 键通常不会也不应将焦点放在非交互式分节元素(例如页眉、主要部分、页脚、导航等)或静态内容(例如段落、列表、div、跨度等)上。
如果您想提高页面导航的可访问性,则可能需要考虑以下事项:
- 尽可能使用 HTML5 已经 implicit ARIA roles 映射的元素
- 在隐式角色不合适的地方实施landmark roles
- 实施 skip links 以便绕过重复导航
- 确保您的 focus indicator 很容易看到并且不会被 CSS
隐藏
tabindex
通常应该避免使用,除非您真的知道自己在做什么并且有充分的理由使用它。一般来说,阅读顺序应该遵循页面的视觉排序,也应该遵循DOM排序。
其他资源:
我正在尝试通过 WAI-ARIA 和所有这些东西学习可访问性,但我真的迷路了,我去了 W3C 和 MDN 上的官方文档,但无法准确了解如何继续。
这是我的网站(不要介意左上角的蓝色和红色的东西,它是 NVDA 的焦点)。
我还不知道我是否在正确的轨道上,如何继续以及它是否是好方法,但我希望在输入文档时,当我按 TAB 键时,它会专注于标签,当我再次按 TAB 时,它会下降到 header,所以这里是 navbrand,然后是 navmenu,当我在 navmenu 上再次按 TAB 时,它会下降到它。事实上,我想要一种能够专注于“每个”重要部分的制表导航(这里:header,主要,页脚,主要的每个部分,部分的每个卡片,每个部分的每个文本卡等...)
为了让您直观地了解正在发生的事情,当我在文档的根目录并按下 TAB 键时,它将直接进入导航的第一个 link。
有人可以照亮我的路吗?我的计划好不好?如果是,如何进行? (即使不好,如何进行?)
非常感谢您的宝贵时间。
N.B.: 我听说使用 tab-index > 0 并尝试 tab-index = 0 甚至 -1 是不好的,但它不起作用,我不知道是否这是否是不好的做法,因为可能会破坏 DOM 命令或者我不知道...
一般来说,如果您使用语义 html(意思是当您有 table 时使用 <table>
元素,当您有列表时使用 <ul>
, <h2>
当你有标题时,等等),那么你不需要任何 ARIA 属性。其实the first rule of ARIA就是不使用ARIA。
ARIA 应该只用于填补语义 html 不可用或有理由不能使用语义 html 的空白(例如出于样式目的,您必须使用 <div>
和 CSS 而不是原生 <button>
).
但是,您的大部分问题都是关于 tabindex
,从技术上讲,这不是 ARIA 属性。 Tabindex 已经存在很长时间了。 doc on tabindex解释了4种类型的值:
- 没有价值
- 负值
- 0 值
- 正值
除非您需要,否则我不会解释差异,因为在您的情况下,您根本不需要 tabindex
。您不想让 non-interactive 元素键盘可聚焦。您提到将焦点移动到 header、页脚、主要内容等。None 这些元素是交互式元素,因此它们不应获得焦点。
如果您的菜单正在使用链接 (<a>
) 或按钮 (<button>
),那么它们已经可以通过 tab 键和tabindex
不需要。
when entering in document, that when I press TAB key, it focuses on the tag and when I press TAB again, it goes down into the header
我不确定你说的“关注标签”是什么意思。
在您的屏幕截图中,如果使用的是真实链接,则“自然”Tab 键顺序为:
- 获取
- 产品
- 服务
- 联系方式
- Découvir ce 服务
- Découvir ce 服务
- Découvir ce 服务
而且你不需要任何额外的代码就可以工作。
听起来您需要的是一本关于键盘辅助功能的入门读物。
Tab 键的正确行为是将焦点移动到网页的交互部分(例如按钮、链接、表单输入、等)。
Tab 键通常不会也不应将焦点放在非交互式分节元素(例如页眉、主要部分、页脚、导航等)或静态内容(例如段落、列表、div、跨度等)上。
如果您想提高页面导航的可访问性,则可能需要考虑以下事项:
- 尽可能使用 HTML5 已经 implicit ARIA roles 映射的元素
- 在隐式角色不合适的地方实施landmark roles
- 实施 skip links 以便绕过重复导航
- 确保您的 focus indicator 很容易看到并且不会被 CSS 隐藏
tabindex
通常应该避免使用,除非您真的知道自己在做什么并且有充分的理由使用它。一般来说,阅读顺序应该遵循页面的视觉排序,也应该遵循DOM排序。
其他资源: