タブコンポーネント

UI コンポーネント Medium #js #tabs #aria #accessibility

クリックで切り替わる標準タブ UI。aria-selected 等のアクセシビリティ属性付き。サービス紹介・料金プラン・FAQ カテゴリ切替に。

▶ プレビュー

解説

クリックでパネルを切り替えるタブ UIです。タブ群には role="tablist"、各ボタンには role="tab"aria-selected を付け、パネルは hidden 属性で表示・非表示を管理します。JavaScript は、押されたタブの data-tab と一致する data-panel だけを表示し、他のタブの aria-selectedfalse に戻すシンプルな処理です。選択中のタブには下線が ::after で表示され、現在地が一目で分かります。

使う場面

  • サービスの「概要・特徴・料金」など情報のグループ分け
  • 商品ページの「説明・仕様・レビュー」の切替
  • 設定画面のカテゴリ別パネル

タブを増やすときは、ボタンと対応するパネルをセットで追加し、data-tabdata-panel の番号を一致させます。aria-selectedhidden を使っているためスクリーンリーダーにも状態が伝わりますが、より完成度を高めるなら矢印キーでのタブ移動や tabindex 制御を加えると、キーボード操作がさらに快適になります。下線の色やパネルの余白は CSS で自由に調整できます。

使用例・適したシーン

  • サービス紹介の切替表示
  • 料金プラン比較
  • FAQ カテゴリ切替

よくある質問

タブを増やすにはどうすればいいですか?
tabs__list にボタンを1つ、その下に対応する tabs__panel を1つ追加します。新しいボタンの data-tab とパネルの data-panel に同じ番号を割り当てれば、JavaScript を変更せずに切替が動きます。
アクセシビリティはどこまで対応していますか?
role=tablist / role=tab / aria-selected と hidden 属性で、選択状態と表示状態を支援技術に伝えています。さらに快適にするなら、矢印キーでタブを移動できるキーボード操作を追加するとよりアクセシブルになります。
追加日:2026-05-11
← すべてのスニペットへ戻る