タブ・セグメント・アコーディオン
同じ場所の内容を切り替えるとき、タブ・セグメント・アコーディオンのどれにする?
判断表
| 判断軸 | 下線スライドタブ 並列の面を横に並べ、1つだけ見せる | セグメンテッドコントロール 同じデータの見方を切り替える | アコーディオン 縦に並べ、開いた項目だけ読む |
|---|---|---|---|
| 候補の数 | 2〜5個。横幅で決まり、増えると折り返す | 2〜4個。短い語だけ。長い語は入らない | 何個でも。縦に伸びるだけ |
| 中身の性質 | 別々の内容(概要・仕様・レビュー) | 同じ内容の別の切り口(今日・今週・今月) | 独立した問答(FAQ・設定の節) |
| 同時に見せられるか | 1つだけ。比べたいときは向かない | 1つだけ。切替が速いので比べやすい | 見本は排他だが、複数開く実装も自然 |
| モバイル | 横スクロールか2段化が要る | 4個までなら1行に収まる | 最も相性が良い。縦に流すだけ |
| キーボード・支援技術 | 見本は click のみ。role=tab と矢印移動は aria-tabs-keyboard を参照 | role=tablist・aria-selected・←→ 移動まで見本にある | 見本はボタンのみ。aria-expanded は accessible-accordion を参照 |
迷ったらこれ
迷ったら、内容が別物ならタブ、同じデータの見方を変えるだけならセグメント、モバイルで項目が多いならアコーディオン。ただし利用者が項目を横断して読む(FAQ を上から順に読む)なら、タブに分けると読み落とす。
タブの中にタブを入れない。2段になるときはどちらかをアコーディオンかページに逃がす。検索エンジンに読ませたい内容は、切替を CSS の表示切替にして DOM に全部残す。