タブのUIデザイン

タブのUIデザインを、設計パターンとして整理したページです。
同じページの中で内容を切り替えるのか、別のページへ移るのか、項目の数や名前の長さ、SPでの見せ方によって、向いている型が変わります。
読み手が今どの内容を見ているかを取り違えず、ほかの内容へ移れるようにするための型をまとめています。

5 patterns

型の選び方を見る ↓

タブの型の一覧

タブの型の選び方

タブの型は、「同じページの中で切り替えるのか、別のページへ移るのか」「項目の数と名前の長さ」「SPでどう見せるか」の3つで変わります。問い1で役割を決め、問い2で並べ方を選び、問い3でSPの見せ方を決めます。型を選んだら、各Patternのページでワイヤーフレームとプロンプト、動くデモを確認できます。

問い1:同じページの中で切り替えますか?別のページへ移りますか?

いちばん先に決める問いです。ここで、タブの役割(tab)で組むか、リンクで組むかが決まります。

状況向く型
同じページの中で、内容を切り替える(基本)上部タブ型・セグメント型・縦タブ型
関係の深い別のページへ移り、ページごとにURLを持たせるページ切り替えタブ型

問い2:項目はいくつで、名前はどのくらいの長さですか?

同じページの中で切り替える場合の、並べ方を決める問いです。

項目の数と名前向く型
2〜3つで、名前が短い。読み手の立場や条件で分けたいセグメント型
3〜5つで、横一列に収まる上部タブ型
多い(6つ以上が目安)、または横一列に収まりにくい長さ縦タブ型

問い3:SPでは、どう見せますか?

狭い画面で、タブが1行に収まるかどうかで決めます。

SPでの状況向く見せ方
タブが1行に収まるタブのまま(セグメント型・ページ切り替えタブ型)
タブが収まらず、項目名をすべて見せたいSPアコーディオン化型
項目が多く、左の列を置けない項目を内容の上に並べ直す(縦タブ型)
少し収まらない程度で、横に動かしても探せる横にスクロールさせる(上部タブ型)

タブの型の比較

型役割置く場所向く状況
上部タブ型切り替え方サービスのページ、商品の詳細同じ形の情報が3〜5つあり、1つずつ読めば足りる
セグメント型切り替え方トップページ、サービスのページ読み手の立場や条件が2〜3通りに分かれる
縦タブ型項目が多いときの並べ方サービス一覧、設定の画面項目が6つ以上で、名前をすべて見せたい
SPアコーディオン化型SPでの見せ方サービスのページPCはタブ、SPでは項目名を縦に見せたい
ページ切り替えタブ型ページの移動会社案内、サービスの詳細関係の深いページを行き来し、URLを分けたい

すべての型に共通する設計の原則

タブの型を作る中で、型が違っても繰り返し出てきた原則です。どの型を選んでも、次の点は同じように確かめます。

  • 同じページの中で切り替えるなら tablist・tab・tabpanel、別のページへ移るならリンクと aria-current で組む。見た目で決めない
  • 選んでいる項目は、色だけでなく形や線でも示す
  • キーボードでは、横に並ぶなら←→、縦に並ぶなら↑↓で移動し、Home・Endで最初と最後へ移る。切り替えが軽くすぐ終わるなら矢印で移動すると同時に表示を変え、読み込みや描画に時間がかかる場合はEnter・スペースキーで確定する方式も検討する
  • 全員に読んでもらいたい内容は、タブに隠さない。最初のタブかタブの外に置く
  • タブの名前は短くし、折り返さない数にとどめる
  • SPで見た目を開閉式に変えたら、役割も aria-expanded の開閉ボタンに変える。内容のHTMLは1つにまとめる。tabpanel は、内容の先頭にフォーカスできる要素がない場合に tabindex="0" を付ける
  • 内容は実際の情報に合わせる。決まっていない場合は「表示例」と明記する

組み合わせの例

よくある質問

タブは、どんなときに使うとよいですか?

同じ形の情報がいくつかあり、読み手が1つずつ読めば足りるときに向きます。全員に続けて読んでもらいたい内容は、タブに隠さずに縦に並べるほうが読まれやすいと考えられます。

タブとアコーディオンは、どう使い分ければよいですか?

項目を見比べながら1つずつ切り替えるならタブ、項目名の一覧から読みたいものだけを開くならアコーディオンが向きます。PCはタブ、SPはアコーディオンと切り替える方法もあります。

タブの中の内容は、検索エンジンに読まれますか?

最初に読み込まれるHTMLや、読み込み後に組み立てられたページの中にある内容なら、検索エンジンは処理できると考えられます。ただし、大切な情報はタブの中だけに閉じ込めず、最初のタブかタブの外に置いておくと安心です。

タブの見た目で、別のページへ移ってもよいですか?

移っても問題ありません。その場合は role=tab を付けずにリンクのまま組み、表示中のページに aria-current を付けます。