Webサイトに動きを!アコーディオンとタブ切替の作り方完全ガイド【コピペOK】

「よく見るアコーディオンやタブ切替、どうやって作るの?」
そんな初心者の方に向けて、この記事ではコピペで使えるHTML・CSS・JavaScriptのコードを使って、FAQやUIメニューでよく使われる「アコーディオン」と「タブ切替」の基本実装を完全ガイドします。

モバイル対応やアクセシビリティの工夫、ChatGPTプロンプト、テンプレートも付いているので、学んで・使える記事です!


目次

🎬 完成イメージ


📂 ファイル構成(実用的な分割型)

accordion-tab-tutorial/
├─ index.html       ← HTML本体(構造)
├─ css/
│   └─ style.css    ← 見た目のスタイル定義
└─ js/
    └─ script.js    ← 開閉・切替の挙動処理

STEP1 HTMLの基本構造を作ろう

まずは、アコーディオンとタブ切替、それぞれのUI構造をHTMLで準備していきましょう。
ここでは、どちらもFAQなどでよく使われる基本形を使います。

アコーディオンのHTML構造

<!-- アコーディオンの全体ラッパー -->
<section class="accordion">
  <!-- 質問ボタン(クリックで開閉) -->
  <button class="accordion-header">Q1:〇〇とは?</button>
  <!-- 回答部分(初期は非表示) -->
  <div class="accordion-content">
    <p>A:〇〇とは〜という意味です。</p>
  </div>

  <button class="accordion-header">Q2:△△の使い方は?</button>
  <div class="accordion-content">
    <p>A:△△はこう使います。</p>
  </div>
</section>

解説

  • .accordion-header はクリック可能な質問見出しです。
  • .accordion-content は初期状態で非表示にする回答部分です。

タブ切替のHTML構造

<!-- タブ切替の全体ラッパー -->
<section class="tabs">
  <!-- タブボタン部分 -->
  <div class="tab-buttons">
    <button class="tab active" data-tab="1">タブ1</button>
    <button class="tab" data-tab="2">タブ2</button>
  </div>

  <!-- タブごとの表示コンテンツ -->
  <div class="tab-contents">
    <div class="tab-content active" data-tab="1">
      <p>タブ1の内容です。</p>
    </div>
    <div class="tab-content" data-tab="2">
      <p>タブ2の内容です。</p>
    </div>
  </div>
</section>

解説

  • .tab ボタンがクリック対象。
  • .tab-content に対応した中身を data-tab 属性で切り替えます。
  • 初期状態で .active を1つだけ付けておきます。

次は、これらの構造にCSSでスタイルと開閉・切替の視覚効果を加えていきましょう。

まずはアコーディオンとタブ、それぞれのHTML構造を用意します。


STEP2 CSSで見た目を整えよう

次に、HTMLで作ったアコーディオンとタブ切替にスタイルを適用して、見た目を整えていきます。
ここでは、ファイル構成に合わせて css/style.css に記述します。

アコーディオン用スタイル

以下はアコーディオンの基本スタイルです。
それぞれのクラスに何をしているか、コメントでわかりやすく記述しています。

/* アコーディオン全体 */
.accordion {
  width: 100%;
  max-width: 600px;
  margin: 2rem auto;
  border: 1px solid #ccc;
  border-radius: 8px;
  overflow: hidden;
}

/* 質問ボタン */
.accordion-header {
  background: #f0f0f0;
  padding: 1rem;
  border-bottom: 1px solid #ccc;
  cursor: pointer;
  font-weight: bold;
  transition: background 0.3s;
}

.accordion-header:hover {
  background: #e0e0e0;
}

/* 回答部分(初期非表示) */
.accordion-content {
  padding: 1rem;
  display: none;
  background: #fff;
}

/* 表示状態(JSで制御) */
.accordion-content.show {
  display: block;
}

タブ切替用スタイル

以下はタブ切替UIのスタイルです。
タブのボタン部分と表示部分を、クラスで制御しています。

/* タブUIのラッパー */
.tabs {
  width: 100%;
  max-width: 600px;
  margin: 2rem auto;
}

/* タブのボタン部分 */
.tab-buttons {
  display: flex;
  border-bottom: 2px solid #ccc;
}

.tab {
  flex: 1;
  padding: 1rem;
  background: #f9f9f9;
  border: none;
  cursor: pointer;
  font-weight: bold;
  border-bottom: 2px solid transparent;
  transition: background 0.3s, border-bottom 0.3s;
}

.tab:hover {
  background: #eee;
}

/* アクティブなタブ */
.tab.active {
  border-bottom: 2px solid #007acc;
  background: #fff;
}

/* タブコンテンツ表示部分 */
.tab-contents {
  padding: 1rem;
  background: #fff;
  border: 1px solid #ccc;
  border-top: none;
}

/* 非表示のコンテンツ */
.tab-content {
  display: none;
}

/* 表示中のコンテンツ */
.tab-content.active {
  display: block;
}

解説

  • .accordion-content や .tab-content は初期状態で display: none; にして、JavaScriptで表示を切り替えるようにしています。
  • アクティブ状態には .show や .active を付けて見た目を変更します。

次は JavaScript を使って、アコーディオンを開閉する処理を実装していきましょう。

開閉や切り替え時のアニメーションや非表示状態の制御をCSSで行います。


STEP3 アコーディオンのJavaScriptを実装しよう

アコーディオンは、クリックでコンテンツの開閉を切り替えるUIです。JavaScriptでは、classListを使って .show クラスを付け外しすることで実現します。

ここでは、複数の質問を「同時に開ける」仕様で進めます。

以下のコードを js/script.js に追加してください

もっと実践的に学びたい方はこちら!

💡「アコーディオンとタブ切替を完成させたい」あなたへ

👇こちらの有料noteでは、

🧰 『Webサイトに動きを!アコーディオンとタブ切替の作り方完全ガイド【コピペOK】』 を公開中!

  • HTML・CSS・JSを分割した実用構成テンプレート
  • コードごとに「なぜこの書き方をしているのか」を丁寧に解説
  • ChatGPTでアコーディオンやタブUIを生成するための具体的プロンプト例
  • スマホ対応・アクセシビリティの解説も収録

🎁 こんな方におすすめ

  • サイトにFAQや切り替えコンテンツを入れたい人
  • コーディングに自信がなくても「仕組みから理解したい」人
  • コピペだけじゃ物足りないけど、何から学べばいいか迷っている人

次回は「視線をつかむ!スクロールアニメーション入門」を予定しています。
動きで魅せるUIをもっと深掘りしていきましょう!

次回の記事をお楽しみに!

✨ 定期購読のご案内

noteメンバーシップでは、以下のような特典をご用意しています!

  • コードの添削&個別アドバイス
  • 月1回のZoom相談
  • 実務テンプレートの先行配布
  • ChatGPTプロンプト共有

「もっと学びたい」「困ったときに相談したい」

そんな方は、ぜひご参加ください!

👉 あなたの「できた!」を、これからも一緒にサポートします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

愛知県を拠点に、AIを活用した業務改善支援、WEB制作、マーケティング戦略サポートを行っています。

営業、マーケティング、WEB開発など多分野で20年以上実務経験を積み、現場視点を持った提案と問題解決を強みとしています。

「誰でも気軽にAIを活用できる世界をつくる」をモットーに、中小企業や個人事業主向けに、成果につながる実践的なノウハウを提供。
ブログやYouTubeを通じて、わかりやすく実用的な情報発信にも力を入れています。

AI活用・業務効率化・マーケティング(集客)でお困りの際は、ぜひご相談ください。

目次