新しいコンテンツを表示するタブ(ボタンである写真)の行がユーザーに表示される1ページの Web サイトがあります。
アクセシビリティと検索エンジンの使いやすさを念頭に置いて
、意味的にベストプラクティスと見なされるものは何ですか?
これが私が考え出したものです:
<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>
- ユーザーがタグの 1 つをクリックすると
<a>
、JavaScriptはとそれに対応するにis-selected
クラスを配置します。<a>
<article>
- タグは CSS でスタイル設定され、
<a>
クリック可能な画像のように表示され、テキストが内側に表示されます。 is-selected
クラスは、どのリンクと対応する記事が現在選択されているかを表します。CSS はすべての記事display:none;
、次に.display:block;
is-selected
正確には、私の質問は次のとおりです。
<nav>
内部要素を持つ要素を使用する必要があり<a>
ますか?このコンテキストで
<a>
s を<ul>
/構造体でラップするのは冗長ですか?<li>
このようなセクションのナビゲーションと記事の間の関係を意味的に表現するより良い方法はありますか?
アップデート:
@AlastairCの有益な回答は、私を正しい方向に導きました。ただし、彼はよりセマンティックなネスト形式を提案しましたが、残念ながらdisplay:table-cell;
、私が望むこのタブ単位の に基づくレイアウトとは互換性がありません。
Alastair のアドバイスに基づいて、ARIA 標準を使用してコミュニティ wiki の回答のマークアップを修正しました (タブを制御するコンテンツと関連付けるため)。Alastair の回答を選択しようと考えていますが、代替マークアップを使用してコミュニティ wiki の回答にコメントしたり、改善したりできる人がいれば、非常に感謝しています。