【備忘録】パンくずリストはolでつくる

最近コーディングするにあたり、WAI-ARIAを極力使うように個人的に気をつけています。先日更新した[seoplus_inline/]でも、アクセシビリティを意識しながら作りました。

WAI-ARIAを使うにあたり個々のhtmlタグの意味などをあらためて考え直していて、ふと気になったことがあったので備忘録に残しておきます。正解かどうかは分からないので参考程度にどうぞ。

パンくずリストはolタグの方が良いのではないだろうか

サイト内の階層関係を示すパンくずリストは特に決まったルールはないものの慣習的にulタグで作りがちです。

しかしulタグは単なるリスト表示などに使います。リスト項目の順番は関係ありません。一方でolタグは明確に順序が決まっているものに使用します。

ホームページ作成系のサービスやECサイトのテンプレート、WordPressで人気のテーマなどを見ていると、パンくずリストもschemaでマークアップされていることがほとんどなので、ulタグかolタグか、などと神経質になる必要はどこにも無いのですが、タグ自身がもつ本来の意図から考えると、パンくずリストにはolタグの方が適しているのはないだろうかと思った次第です。

パンくずリストとWAI-ARIA

冒頭にWAI-ARIAの話を出したのは導入の意味でしかなかったのですが、それで思い出したので蛇足話を1つ。

パンくずリストにnav使う?使わない?

html5が登場した頃あちこちの解説サイトを見て回ったのですが、「navタグは各ページに1つしか使わない。多くの場合グローバルナビゲーションが該当するだろう」と書いてあったと記憶しています。

しかし実際にはnavはページ内で複数使うことが出来ます

「外部リンクを含むナビゲーション全てにnavを使う必要はない」らしいので、私はグローバルナビとパンくずはnavタグで囲むようにしています。

role=”navigation”の位置

WAI-ARIAのロール分類を隈なくみても、パンくずを表すroleは無さそうなのでnavigationが最善だと思われます。

パンくずだけでなく、グローバルナビも同じくnavigationロールですが、ol(ul)タグにrole=”navigation” をセットしているサイトを見つけることがあります。

ですが、mozillaのデベロッパーサイトなどでも、ulタグを囲む親要素にnavigationロールをセットしており、ul(ol)タグそのものにつけるのは誤りであると思われます。

navは自動的にnavigation属性を持つので role=”navigation”をセットする必要はなく、仕様書でもできるだけnavを使うことを推奨しています。

そういうわけで、最終的に自分の中で落ち着いたパンくずはこんな感じ。

<nav aria-label="パンくず">
 <ol>
  <li><a href="/"> ... </a></li>
  <li><a href="xxx"> .. </a></li>
 </ol>
</nav>

もし、schemaも直接コーディングするとなると、途端に長くなってしまう。

<nav aria-label="パンくず">
 <ol itemscope itemtype="https://schema.org/BreadcrumbList">
  <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><a href="/" itemprop="item"><span itemprop="name">...</span></a><meta itemprop="position" content="1"></li>
 <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><a href="xxx" itemprop="item"><span itemprop="name">..</span></a><meta itemprop="position" content="2"></li>
 </ol>
</nav> 

schemaの構造化データに関しては、microdataよりもjsonが推奨されているので、直接コーディングはあまりしないほうが良いですね。コードも長くなって読みにくいし。

タイトルとURLをコピーしました