gpt4 book ai didi

html - 标签部分的语义标记和 WAI-ARIA?

转载 作者:太空狗 更新时间:2023-10-29 14:13:14 25 4
gpt4 key购买 nike

我正在标记一个网站,我一直在努力磨练我的可访问性技能。我想知道对于选项卡内容最语义化的标记是什么。这就是我现在拥有的:

<section>
<nav>
<a href="#tab" aria-controls="content">Stuff</a>
<a href="#tab" aria-controls="content">Stuff</a>
<a href="#tab" aria-controls="content">Stuff</a>
</nav>
<section id="content" aria-live="polite" role="region">
<article>...</article>
<article>...</article>
<article>...</article>
</section>
</section>

我对此有几个具体问题。

  1. 我走的路对吗?如果不能,有人可以推荐一些更改吗?
  2. 如果我通过 AJAX 加载文章,是否需要进行更改?
  3. 我需要导航标签吗?
  4. 这里的 WAI-ARIA 角色够用吗?
  5. 这些是要使用的正确 WAI-ARIA 角色吗?

最佳答案

1.我走在正确的轨道上吗?如果不能,有人可以推荐一些更改吗?

是的,您的开端绝对不错。如果你想改进它,一些选项卡的东西可以被赋予一些与选项卡相关的角色,但它的功能是这样的。

2.如果我通过AJAX加载文章,是否需要进行更改?

没有。应该没问题。事实上,它是一个实时区域(仅使用 NVDA 进行测试)意味着新内容已发布。这是你追求的行为吗?

3.我需要nav标签吗?

不,但我认为这有助于清楚地说明文档的那部分内容。不过请注意,如果您执行我在下面所做的并将其标记为选项卡列表,那么它是导航元素的事实就不会再公布了。

4.这里的 WAI-ARIA 角色够用吗?

如果通过 ARIA 角色您还包括状态和属性,是的,基本上您应该涵盖加载动态内容(如果这是您所追求的)。没有理由移动用户的键盘焦点或任何东西。 IMO,只有在用户点击的内容和您提供给他们的内容之间存在大量导航内容时,您才会真正想要这样做。

5.这些是正确的 WAI-ARIA 角色吗?

你离得不远了。如果你真的想要一个选项卡式的体验,那么你需要 tablist、tab 和 tabpanel 角色。我举个例子。

我已经采用了您的代码并制作了一个人为但有效的示例来测试它。它不会在 AJAX 中加载任何内容,只是显示和隐藏内容。在给出这个答案之前,我想确定一下,但我也会将代码放在这里,以防有帮助。

<html>
<head>
<title>Aria test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('nav a').on('click', function () {
hideArticles();
deslectAllTabs();
$(this).attr('aria-selected', true);
var tab = '#' + $(this).attr('aria-controls');
$(tab).show();
});
});

function hideArticles() {
$('article').hide();
}
function deslectAllTabs() {
$('nav a').attr('aria-selected', false);
}
</script>
<style type="text/css">
article { display: none; }
</style>
</head>
<body>
<section>
<nav role="tablist">
<a href="#tab" aria-controls="content1" id="tab1" role="tab">Stuff1</a>
<a href="#tab" aria-controls="content2" id="tab2" role="tab">Stuff2</a>
<a href="#tab" aria-controls="content3" id="tab3" role="tab">Stuff3</a>
</nav>
<section id="content" aria-live="polite" role="region">
<article id="content1" role="tabpanel">The lazy dog jumped over the quick fox</article>
<article id="content2" role="tabpanel">If you click this tab then your life will be better</article>
<article id="content3" role="tabpanel">Know your roles</article>
</section>
</section>
</body>
</html>

希望对您有所帮助。

关于html - 标签部分的语义标记和 WAI-ARIA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19203501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com