ボタンクリックで指定したアコーディオンを開く方法【HTML/CSS/JavaScript・サンプルコード付き】

アコーディオン

ボタンクリックで指定したアコーディオンを開く方法

ボタンクリックで指定したアコーディオンを開く方法を紹介します。このサンプルでは、HTML・CSS・JavaScriptを使用し、「サービス詳細」「料金プラン」「お問い合わせ」の3つのボタンを用意します。それぞれのボタンをクリックすると、対応するアコーディオンだけを開くことができます。アコーディオンの見出し自体をクリックした場合は、通常どおり個別に開閉できます。

サービス紹介ページや料金案内、FAQ、会員サイトのヘルプ、管理画面など、複数の情報から特定の項目へ利用者を案内したい場面に利用できます。たとえば「料金プラン」ボタンをクリックすると料金プランのアコーディオンが開くため、複数の項目が並んでいても目的の内容をすぐに表示できます。「サービス詳細」や「お問い合わせ」についても、それぞれ対応する項目を直接開けます。

HTMLでは3つの操作ボタン、アコーディオンの見出し、表示する内容を変更できます。CSSではボタンを3列で横並びにし、全体の横幅、余白、背景色、枠線、角丸、ボタンの色などを調整できます。JavaScriptでは各ボタンに指定した値をもとに対応するアコーディオンを開く処理を行います。640px以下では操作ボタンを1列に切り替えるため、スマートフォン・タブレット・PCで利用できます。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

指定したアコーディオンを開く

上のボタンをクリックすると、対応するアコーディオンを開けます。

サービスの内容や利用方法について説明する項目です。
料金や利用プランについて確認できます。
お問い合わせ方法について確認できます。

「サービス詳細」「料金プラン」「お問い合わせ」の各ボタンをクリックすると、対応するアコーディオンが開きます。各見出しは個別に開閉できます。

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

<!DOCTYPE html>
<html lang="ja">
<head>

  <!-- 文字コード -->
  <meta charset="UTF-8">

  <!-- スマートフォン対応 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ページタイトル -->
  <title>ボタンクリックで指定したアコーディオンを開く</title>

  <!-- CSSファイル -->
  <link rel="stylesheet" href="style.css">

</head>
<body>

  <!-- アコーディオン全体 -->
  <div class="accordion-open-specific_wrap">

    <!-- タイトル -->
    <div class="accordion-open-specific_title">
      指定したアコーディオンを開く
    </div>

    <!-- 説明文 -->
    <p class="accordion-open-specific_text">
      上のボタンをクリックすると、対応するアコーディオンを開けます。
    </p>

    <!-- 指定したアコーディオンを開くボタン -->
    <div class="accordion-open-specific_actions">

      <button
        class="accordion-open-specific_action"
        type="button"
        data-open-specific="service">
        サービス詳細
      </button>

      <button
        class="accordion-open-specific_action"
        type="button"
        data-open-specific="plan">
        料金プラン
      </button>

      <button
        class="accordion-open-specific_action"
        type="button"
        data-open-specific="contact">
        お問い合わせ
      </button>

    </div>

    <!-- サービス詳細 -->
    <div
      class="accordion-open-specific_item"
      data-accordion-specific="service">

      <button
        class="accordion-open-specific_button"
        type="button">
        サービス詳細
      </button>

      <div class="accordion-open-specific_content">
        サービスの内容や利用方法について説明する項目です。
      </div>

    </div>

    <!-- 料金プラン -->
    <div
      class="accordion-open-specific_item"
      data-accordion-specific="plan">

      <button
        class="accordion-open-specific_button"
        type="button">
        料金プラン
      </button>

      <div class="accordion-open-specific_content">
        料金や利用プランについて確認できます。
      </div>

    </div>

    <!-- お問い合わせ -->
    <div
      class="accordion-open-specific_item"
      data-accordion-specific="contact">

      <button
        class="accordion-open-specific_button"
        type="button">
        お問い合わせ
      </button>

      <div class="accordion-open-specific_content">
        お問い合わせ方法について確認できます。
      </div>

    </div>

  </div>

  <!-- JavaScriptファイル -->
  <script src="script.js"></script>

</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでは「サービス詳細」「料金プラン」「お問い合わせ」の3つの操作ボタンと、それぞれに対応するアコーディオンを配置します。CSSでボタンやアコーディオンの見た目を整え、JavaScriptでクリックした操作ボタンに対応するアコーディオンを開く処理と、各アコーディオンを個別に開閉する処理を行います。

sample/
├── index.html
├── style.css
└── script.js

各ファイルの役割
index.htmlは操作ボタンとアコーディオン全体を構成するファイルです。「サービス詳細」「料金プラン」「お問い合わせ」のボタン名、各アコーディオンの見出し、表示する本文を変更できます。data-open-specificdata-accordion-specificに同じ値を指定することで、操作ボタンと開くアコーディオンを対応させています。

style.cssはアコーディオン全体のデザインを設定するファイルです。全体の横幅、余白、背景色、枠線、角丸、操作ボタンの色、アコーディオン見出しや本文の表示を変更できます。操作ボタンはPCなどの広い画面では3列で横並びにし、画面幅640px以下では1列へ切り替えます。

script.jsはアコーディオンの動作を設定するファイルです。上部の操作ボタンをクリックすると、data-open-specificの値を取得し、同じ値を持つアコーディオンへis-openクラスを追加して内容を表示します。また、各アコーディオンの見出しをクリックすると、その項目だけを個別に開閉できます。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを同じ階層で配置します。そのあとsample/index.htmlをブラウザで開いてください。「サービス詳細」「料金プラン」「お問い合わせ」のいずれかの操作ボタンをクリックすると、対応するアコーディオンが開きます。各アコーディオンの見出しを直接クリックした場合は、その項目を個別に開閉できます。

カスタマイズできる内容
index.htmlではタイトル、説明文、3つの操作ボタンの文字、アコーディオンの見出し、本文を変更できます。操作ボタンとアコーディオンの対応先を変更する場合は、操作ボタンのdata-open-specificと、対応する項目のdata-accordion-specificへ同じ値を設定します。

style.cssでは全体の最大横幅、余白、背景色、枠線、角丸、タイトルの文字サイズ、操作ボタンの色や余白、各アコーディオンの間隔などを変更できます。開いている項目では「+」が「-」へ切り替わり、本文が表示されます。

数値調整
style.css
max-width:700px;
アコーディオン全体の最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

margin:40px auto;
アコーディオン全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。

padding:32px;
アコーディオン全体の内側余白です。値を大きくすると内容と外枠の間隔が広がります。

border-radius:18px;
アコーディオン全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

font-size:22px;
タイトルの文字サイズです。値を大きくするとタイトルが大きくなり、小さくすると小さくなります。

grid-template-columns:repeat(3,1fr);
操作ボタンを3列で横並びにする設定です。3つのボタンを同じ横幅で配置します。

gap:10px;
3つの操作ボタン同士の間隔です。値を大きくするとボタン同士の間隔が広がります。

padding:12px 14px;
操作ボタンの内側余白です。12pxが上下、14pxが左右の余白を表します。値を大きくするとボタンが大きくなります。

border-radius:8px;
操作ボタンの角丸です。値を大きくすると丸みが強くなります。

margin-bottom:12px;
アコーディオン項目同士の間隔です。値を大きくすると各項目の間隔が広がります。

border-radius:12px;
各アコーディオン項目の角丸です。値を大きくすると丸みが強くなります。

padding:16px 18px;
アコーディオン見出しの内側余白です。16pxが上下、18pxが左右の余白を表します。

font-size:22px;
アコーディオン右側に表示する「+」「-」記号の文字サイズです。値を大きくすると記号が大きくなります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-width:700pxによって、画面幅に合わせてアコーディオン全体が縮小されます。画面幅640px以下ではpadding:24px 18px;へ変更し、grid-template-columns:1fr;によって3つの操作ボタンを横並びから縦並びへ切り替えます。そのため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント