detailsタグとsummaryタグ

デフォルト

デフォルト

デフォルト状態の要素です。


サンプル1

サンプル1 : summary全体がaタグ

summary内にインタラクティブ要素(aタグ)を使用したケースです


サンプル2

サンプル2 : summaryの一部にリンク挿入[link]

summary内にインタラクティブ要素(aタグ)を使用したケースです。 ここではsummary要素は、テキストノードとインライン要素を持ちます。

概要と目的

ここでは、detailsタグ(及び summaryタグ)についての検証を行う

各種検証

スクリーンリーダー

VoiceOver(MacOS+Chrome)

デフォルト

きちんと読まれていることがわかる。

  • デフォルト、下位項目が折りたたまれました、三角形の展開ボタン、グループ
  • デフォルト、字間広く、三角形の展開ボタン、グループ
サンプル1

サマリー要素として読まれる。 操作者はリンクがあることを認識できないし、リンクを操作することもできない。

  • サンプル1 : summary全体がaタグ、下位項目が折りたたまれました、三角形の展開ボタン、グループ
  • サンプル1 : summary全体がaタグ、字間広く、三角形の展開ボタン、グループ
サンプル2

サマリー要素として読まれる。 操作者はリンクがあることを認識できないし、リンクを操作することもできない。

  • サンプル2 : summaryの一部にリンク挿入[link]、下位項目が折りたたまれました、三角形の展開ボタン、グループ
  • サンプル2 : summaryの一部にリンク挿入[link]、字間広く、三角形の展開ボタン、グループ

ChromeVox

キー操作

キー操作自体には問題はない。 Tabキーを押すと、summary要素、a要素のそれぞれにフォーカスを移せる。

結論

`summary`タグは `role="button"` であるため、中にインタラクティブ要素を入れても無視されることになる。
`summary` 内は、純粋なテキストのみにしておくべきだろう。

親子関係があるカテゴリ一覧を details, summary を使ってアコーディオンにする場合は、 親となる要素を summary にリンク付きで入れるのではなく、親要素のテキストは summary に入れ、 リンク要素は格納要素内に別に作るべきだろう。

親カテゴリ

これなら親子関係を維持しつつ、親カテゴリにもリンクを付与することができる。