html 接片槽折叠组件未按预期工作

db2dz4w8  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(87)

我有一个 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 a1Link a2相同去槽My Title 2。有人知道我为什么会有这种行为吗?

注意:我发现当我将<a>标签更改为<p>或简单文本时,它可以按预期工作。

rggaifut

rggaifut1#

默认情况下,某些项目是可聚焦的,这些项目是:

  • 链接()
  • 表单输入元素,如文本框、复选框、单选按钮和按钮
  • 可编辑内容的元素<div contenteditable="true"><span contenteditable="true">

如果你的标记有很好的语义,例如你可以点击的东西是按钮,你就不必太担心tabindex。
但是,根据您隐藏acordion内容的方式,这也可能影响tabindex。
例如,在页面中切换时,带有display: none的元素将被跳过。visibility: hidden仍然会获得焦点。
出于可用性的考虑,可聚焦的元素是您可以与之交互的元素,这通常被认为是一种良好的实践。

相关问题