縦型タブ(サイドバー風)
縦方向に並んだタブでパネルを切り替える、サイドバー風の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; /* 表示に切り替える */
}
コメント