我有一个单页网站,向用户显示一排显示新内容的选项卡(照片是按钮) 。
考虑到可访问性和搜索引擎友好性,在
语义上什么可能被认为是最佳实践?
这是我的想法:
<section class="fruits">
<h1>Fruits</h1>
<nav>
<a data-article-class="banana">
<p>Learn about <strong>Bananas</strong></p> </a>
<a data-article-class="apple" class="is-selected">
<p>Learn about <strong>Apples</strong></p> </a>
<a data-article-class="pear">
<p>Learn about <strong>Pears</strong></p> </a>
</nav>
<div>
<article class="banana">
<h1>The Banana</h1>
<p>A long yellow fruit...</p>
</article>
<article class="apple is-selected">
<h1>The Apple</h1>
<p>A round red fruit...</p>
</article>
<article class="pear">
<h1>The Pear</h1>
<p>A funny-shaped green fruit...</p>
</article>
</div>
</section>
- 当用户单击其中一个
<a>
标签时,JavaScript 会将is-selected
类放在<a>
及其对应的<article>
. - 标签将
<a>
使用 CSS 设置样式,看起来像可点击的图像,其中的文本可见。 - 该类
is-selected
表示当前选择了哪个链接和对应的文章——CSS 将display:none;
所有文章,然后display:block;
是具有is-selected
.
准确地说,我的问题是:
我应该使用
<nav>
带有内部<a>
元素的元素吗?<a>
在这种情况下将s包装在<ul>
/<li>
结构中是多余的吗?有没有更好的方法在语义上表示导航和这些部分的文章之间的关系?
更新:
@AlastairC 信息丰富的回答让我朝着正确的方向前进。display:table-cell;
不过,他提出了一种更语义化的嵌套格式,不幸的是,这与我想要的这个选项卡单元的基于 - 的布局不兼容。
根据 Alastair 的建议,我使用 ARIA 标准修改了社区 wiki 答案中的标记(将选项卡与它们控制的内容相关联)。我想我会选择 Alastair 的答案,但如果有人可以使用备用标记评论或改进社区 wiki 答案,我将非常感激。