
ライブラリなしでタブUIを実装したいときは、JavaScriptの標準APIだけで十分対応可能です。この記事では、HTML・CSS・JavaScriptを使って、シンプルで拡張性の高い「タブ切り替えUI」の作り方を解説します。
実装イメージ
- ボタンをクリックすると該当タブの内容が表示
- 非アクティブなパネルは非表示に
- クラス切り替えでスタイル変更
HTML構造
<div class="tabs">
<button class="tab active" data-target="#panel1">タブ1</button>
<button class="tab" data-target="#panel2">タブ2</button>
</div>
<div class="tab-content active" id="panel1">タブ1の内容</div>
<div class="tab-content" id="panel2">タブ2の内容</div>
CSSで切り替えのスタイルを定義
.tab-content {
display: none;
padding: 1em;
border: 1px solid #ccc;
}
.tab-content.active {
display: block;
}
.tab.active {
background-color: #333;
color: #fff;
}
JavaScriptでタブ切り替え処理
document.addEventListener("DOMContentLoaded", () => {
const tabs = document.querySelectorAll(".tab");
const contents = document.querySelectorAll(".tab-content");
tabs.forEach(tab => {
tab.addEventListener("click", () => {
const target = document.querySelector(tab.dataset.target);
// すべてのタブとコンテンツのactiveを解除
tabs.forEach(t => t.classList.remove("active"));
contents.forEach(c => c.classList.remove("active"));
// 対象にactiveを追加
tab.classList.add("active");
target.classList.add("active");
});
});
});
ポイントまとめ
data-target
属性で対象を明示classList.add/remove
でスタイルを切り替えquerySelectorAll
で複数の要素を効率的に制御
おわりに
ブラウザ標準のAPIだけで、軽量でカスタマイズ性の高いタブUIを実装できます。より複雑なナビゲーションやアニメーションへの応用も可能ですので、ぜひ活用してみてください。
次回は「アコーディオンメニューとの併用パターン」などもご紹介予定です!
Web制作やHTML/CSSの学習に役立つ情報を初心者向けに発信しています。
プロフィールはこちら