コピペで完結!タブ切替 #06【縦型タブ(サイドバー風)】

html/css/js

縦型タブ(サイドバー風)

縦方向に並んだタブでパネルを切り替える、サイドバー風のUIです。 メニューのように利用でき、情報量が多いページや設定画面に便利です。 ARIA属性とキーボード操作(↑↓Home End)に対応し、アクセシビリティにも配慮しています。

  • タブを縦に並べたサイドバー風のUI
  • メニューのようにパネルを切り替え可能
  • ARIA属性とキーボード操作対応
  • セクションスコープCSSで衝突防止
コードについて 本記事のコードは AI(ChatGPT)による生成をベースに作成・調整しています。ご利用の環境でテストの上ご使用ください。
免責 本コードの利用に伴う不具合・損害について、当サイトは責任を負いません。自己責任にてご利用ください。

デモ

タブ1の内容がここに表示されます。

コードをコピーして使おう!

/* 縦型タブ(サイドバー風)のCSS */

/* ===============================
   色をまとめて管理する変数定義
   =============================== */
:root {
  --ink:#0f172a;    /* 基本文字色(濃い黒) */
  --muted:#64748b;  /* 補助文字色(灰色) */
  --accent:#0b6bff; /* アクセントカラー(青) */
  --border:#e5e7eb; /* 枠線用カラー(薄いグレー) */
}

/* ===============================
   タブ全体の外枠
   =============================== */
#demo-section .tab-container {
  display:flex;                  /* 左タブ・右パネルを横並びにする */
  border:1px solid var(--border);/* 外枠に枠線を付ける */
  border-radius:10px;            /* 角を丸くする */
  overflow:hidden;               /* 内側がはみ出さないようにする */
  min-height:200px;              /* 高さを最低200px確保 */
}

/* ===============================
   縦方向タブのリスト(左側)
   =============================== */
#demo-section .tablist {
  flex:0 0 160px;                /* 幅を固定:160px */
  display:flex;                  /* フレックスボックス化 */
  flex-direction:column;         /* 縦に並べる */
  background:#f8fafc;            /* 薄い背景色 */
  border-right:1px solid var(--border); /* 右に仕切り線 */
}

/* ===============================
   タブボタン共通のスタイル
   =============================== */
#demo-section .tablist button {
  appearance:none;               /* ブラウザのデフォルト装飾を無効化 */
  border:none;                   /* 枠線を消す */
  background:none;               /* 背景も消す */
  padding:12px 16px;             /* 内側余白 */
  text-align:left;               /* 左寄せにする */
  font-size:14px;                /* 文字サイズ */
  color:var(--ink);              /* 基本文字色 */
  cursor:pointer;                /* ホバー時に指カーソル */
  border-bottom:1px solid var(--border); /* 下に仕切り線 */
}

/* ===============================
   選択されているタブ
   =============================== */
#demo-section .tablist button[aria-selected="true"] {
  background:var(--accent);      /* 背景を青に */
  color:#fff;                    /* 文字色を白に */
}

/* ===============================
   パネル部分(右側の表示エリア)
   =============================== */
#demo-section .tabpanel {
  flex:1;                        /* 残り幅いっぱい広がる */
  padding:16px;                  /* 内側余白 */
  display:none;                  /* 初期は非表示 */
}

/* ===============================
   選択中のパネルだけ表示
   =============================== */
#demo-section .tabpanel[aria-hidden="false"] {
  display:block;                 /* 表示に切り替える */
}

コメント