我正在一个主页上工作,在那里我有带有背景imgs和内部cta的元素包装器。每个包装器和cta都有自己的tabindex(hp中大约有400个tabindex(,它们都是有序的。
奇怪的是,当我使用TAB导航时,即使tabindexs的顺序正确,也要首先导航所有div包装器,然后在到达页脚后返回页面以导航cta。
cta是<div><objects><a tabindex="x"></object></div>
,包装器是<div><a tabindex="x"><picture></a></div>
我遇到的问题是,我发现的每一条信息都是关于让浏览器忽略tabindex的,我需要相反的信息
您不需要在<a>
上设置tabindex
。浏览器将按照DOM中元素的顺序自行遍历<a>
等可聚焦元素。只有在需要更改默认行为时,才应添加tabindex
。通常不鼓励使用除0
和-1
之外的tabindex
值。
如果您希望包装器也可以对键盘进行聚焦,那么可以向它们添加tabindex="0"
。tabindex="0"
将使元素键盘按顺序DOM顺序(就像<a>
一样(可聚焦(如果它还不像div的话(。
我不完全理解你的伪代码,但我认为CTA在可聚焦包装器内。在这种情况下,以下示例代码将允许您按以下顺序进行制表:包装器1、链接1、包装器2、链接2等。
<div tabindex="0">
<p>Content</p>
<a href="#">Link</a>
</div>
<div tabindex="0">
<p>Content</p>
<a href="https://google.com">Link</a>
</div>
如果你或其他读者没有得到预期的结果,还有两个额外的注意事项:
- 要成为键盘可聚焦的
<a>
标签,需要有一个href
,以便它们是交互式的,否则它们将被跳过 - 在macOS上,你需要打开键盘聚焦,否则链接将无法聚焦。请注意,每个浏览器的设置都不同