slo*_*pps 5 html javascript accessibility wai-aria
当针对可访问性进行编程/设计时,是否有适当的方法来传达特定项目已“完成”?
目前正在构建一些易于访问的电子学习。在特定活动中,必须按下许多按钮,激活每个按钮会在单独的面板中显示更多信息。在这个特定的示例中,我使用了一个选项卡列表。
访问完所有选项卡后,用户可以继续进行下一个活动。
将 aria-label 更改为“Tab 1 - 完整”或“Tab 1 - 不完整”之类的内容是否足以指示其状态?
为了澄清起见,在这个特定的示例中,我使用选项卡列表,使用包含组件 - 选项卡式接口中的方法。无序列表需要有一个role="tablist",所以我不能使用role="progressbar"。IE:
<ul role="tablist">
<li role="presentation"> <a role="tab" href="javascript:void(0)">Tab 1</a> </li>
<li role="presentation"> <a role="tab" href="javascript:void(0)">Tab 2</a> </li>
</ul>
Run Code Online (Sandbox Code Playgroud)
您可以通过提供 来告诉辅助技术(例如屏幕阅读器)某个元素显示了进度role="progressbar"。aria-valuemin然后,您可以分别使用和设置最小值和最大值aria-valuemax,并使用 来显示当前值aria-valuenow。默认情况下,屏幕阅读器aria-valuenow以基于最小值和最大值的百分比表示。但是,您可以设置aria-valuetext告诉屏幕阅读器以不同的格式显示该值。它可能看起来像这样:
<ol tabindex="0" role="progressbar" aria-valuemin="1" aria-valuemax="3" aria-valuenow="1" aria-valuetext="Step 1 of 3: First Step">
<li>First Step</li>
<li>Second Step</li>
<li>Last Step</li>
</ol>
Run Code Online (Sandbox Code Playgroud)
提供该元素tabindex="0"将确保用户在每个完成的步骤后点击该元素,从而获取新信息。
请务必提供非当前内容部分,aria-hidden="true"以使屏幕阅读器跳过它们。
在这种情况下,role="tablist"有一些不同的元素可以为您提供帮助。在您的情况下,您可以使用aria-hidden和aria-selected作为您的状态并使用 控制焦点tabindex。假设屏幕阅读器用户位于第一个选项卡上,您的代码可能如下所示:
<ul role="tablist">
<li role="presentation">
<a role="tab" href="#section1" id="tab1" aria-selected="true" tabindex="0">Tab 1</a>
</li>
<li role="presentation">
<a role="tab" href="#section2" id="tab2" aria-selected="false" tabindex="-1">Tab 2</a>
</li>
</ul>
<section role="tabpanel" id="section1" aria-labelledby="tab1" aria-hidden="false">
// Tab1 content here
</section>
<section role="tabpanel" id="section2" aria-labelledby="tab2" aria-hidden="true">
// Tab2 content here
</section>
Run Code Online (Sandbox Code Playgroud)
通过此设置,您的屏幕阅读器用户无法使用 Tab 键切换到第二个选项卡,并且其内容也对屏幕阅读器隐藏。tabindex通过更改、aria-hidden和 ,您可以在屏幕阅读器用户单击相应按钮时触发相应的选项卡aria-selected。
如果您想通知屏幕阅读器用户进度,您只需提供按钮即可aria-label。例如,选项卡 1 的按钮可以具有:aria-label="Complete step 1 out of 3"。
希望能帮助到你!