我有一个 accordion 组件,它工作得很好,但最近我注意到,当我开始标签槽组件不是工作的预期。
下面是我的代码:
<ul>
<li tabindex="0">
<h4 aria-expanded="false" aria-controls="abc" id="id_abc">
<span>My Title 1</span>
</h4>
<div id="abc" role="region" aria-labelledby="id_abc">
<ul>
<li>
<a href="http://google.com">Link a1</a>
</li>
<li>
<a href="#">Link a2</a>
</li>
</ul>
</div>
</li>
<li tabindex="0">
<h4 aria-expanded="false" aria-controls="xyz" id="id_xyz">
<span>My Title 2</span>
</h4>
<div id="xyz" role="region" aria-labelledby="id_xyz">
<ul>
<li>
<a href="http://google.com">Link b1</a>
</li>
<li>
<a href="http://google.com">Link b2</a>
</li>
</ul>
</div>
</li>
</ul>
问题是当我跳到波谷的时候我想跳过My title 1
并跳到My title 2
,因为它们都没有打开。(顺便说一下,aria-expanded
的变化没有任何问题),但当我去My Title 1
关闭它去更深的槽Link a1
和Link a2
相同去槽My Title 2
。有人知道我为什么会有这种行为吗?
注意:我发现当我将<a>
标签更改为<p>
或简单文本时,它可以按预期工作。
1条答案
按热度按时间rggaifut1#
默认情况下,某些项目是可聚焦的,这些项目是:
<div contenteditable="true">
、<span contenteditable="true">
如果你的标记有很好的语义,例如你可以点击的东西是按钮,你就不必太担心tabindex。
但是,根据您隐藏acordion内容的方式,这也可能影响tabindex。
例如,在页面中切换时,带有
display: none
的元素将被跳过。visibility: hidden
仍然会获得焦点。出于可用性的考虑,可聚焦的元素是您可以与之交互的元素,这通常被认为是一种良好的实践。