FAQ・Q&A向けアコーディオンの作り方【HTML/CSS/JavaScript・サンプルコード付き】

アコーディオン
無料ツール
アコーディオンを自由に作成

見出し・内容・開閉方法・色・サイズ・アイコンなどを設定して、HTML・CSS・JavaScriptを自動生成できます。

アコーディオン作成ツールを使う
新しいタブで開きます

FAQ・Q&A向けアコーディオンの作り方

FAQ・Q&A向けアコーディオンの作り方を紹介します。このサンプルでは、よくある質問と回答を縦に並べ、質問をクリックすると対応する回答を開閉できるアコーディオンをHTML・CSS・JavaScriptで実装します。回答を最初からすべて表示せず、必要な項目だけを開いて確認できるため、質問数が多いページでも内容を整理して掲載できます。

FAQページやお問い合わせ前の案内、料金ページ、サービス説明ページなど、質問と回答をまとめて掲載したい場面に利用できます。各質問には「Q.」、回答には「A.」を表示し、閉じている質問には「+」、開いている質問には「-」を表示します。質問をクリックするたびに、その項目だけを個別に開閉できるため、複数の回答を同時に開いて確認することもできます。

HTMLでは質問と回答の文章や項目数を変更でき、CSSでは横幅、余白、背景色、枠線、角丸、文字色などを調整できます。JavaScriptではクリックした質問の親要素へ開閉用のクラスを付け外しし、回答の表示状態を切り替えます。シンプルな構成なので内容を変更しやすく、FAQ・Q&Aをアコーディオン形式で掲載したいWebページへ導入しやすいサンプルです。

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

デモ

FAQ・Q&A向けアコーディオン

質問をクリックすると、回答を開閉できます。

サンプルコードは自由に確認できます。実際に利用する場合は、事前に動作確認を行ってください。
このサンプルでは、クリックした質問の開閉をJavaScriptで制御しています。
FAQページ、料金ページ、サービス説明ページ、お問い合わせ前の案内などに使えます。

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

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

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

  <!-- 画面幅に合わせて表示 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ページタイトル -->
  <title>FAQ・Q&A向けアコーディオン</title>

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

</head>
<body>

  <!-- デモ全体を囲むエリア -->
  <div class="faq-accordion_wrap">

    <!-- タイトル -->
    <div class="faq-accordion_title">
      FAQ・Q&A向けアコーディオン
    </div>

    <!-- 説明文 -->
    <p class="faq-accordion_text">
      質問をクリックすると、回答を開閉できます。
    </p>

    <div class="faq-accordion_item">
      <button class="faq-accordion_question" type="button">
        <span class="faq-accordion_question-text">利用料金はかかりますか?</span>
      </button>
      <div class="faq-accordion_answer">
        サンプルコードは自由に確認できます。実際に利用する場合は、事前に動作確認を行ってください。
      </div>
    </div>

    <div class="faq-accordion_item">
      <button class="faq-accordion_question" type="button">
        <span class="faq-accordion_question-text">JavaScriptは必要ですか?</span>
      </button>
      <div class="faq-accordion_answer">
        このサンプルでは、クリックした質問の開閉をJavaScriptで制御しています。
      </div>
    </div>

    <div class="faq-accordion_item">
      <button class="faq-accordion_question" type="button">
        <span class="faq-accordion_question-text">どんなページに使えますか?</span>
      </button>
      <div class="faq-accordion_answer">
        FAQページ、料金ページ、サービス説明ページ、お問い合わせ前の案内などに使えます。
      </div>
    </div>

  </div>

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

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

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではFAQ・Q&Aの質問と回答を作成し、CSSで各項目の枠線、余白、背景色、角丸、「Q.」「A.」の表示、開閉アイコンなどを整えます。JavaScriptでは質問ボタンをクリックしたときに、対応するFAQ項目へis-openクラスを付け外しして回答の表示・非表示を切り替えます。

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

各ファイルの役割
index.htmlはFAQ・Q&A向けアコーディオン全体を構成するファイルです。タイトル、説明文、質問文、回答文を変更できます。質問と回答はfaq-accordion_itemで1組になっているため、同じ構造を追加することでFAQ項目を増やせます。

style.cssはアコーディオンの見た目を設定するファイルです。全体の最大横幅、余白、背景色、枠線、角丸、質問ボタンの余白、「Q.」「A.」の色、開閉アイコンの表示などを変更できます。回答は初期状態でdisplay:none;になっており、FAQ項目へis-openクラスが付くとdisplay:block;へ切り替わります。

script.jsは質問をクリックしたときの開閉処理を行うファイルです。すべてのfaq-accordion_questionを取得し、クリックされたボタンの親要素へis-openクラスを付け外しします。各FAQ項目は個別に開閉できるため、複数の回答を同時に開いた状態にもできます。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを同じ階層で配置します。3ファイルを保存したあと、sample/index.htmlをブラウザで開いてください。

表示された質問をクリックすると、その質問に対応する回答が表示されます。もう一度同じ質問をクリックすると回答が閉じます。閉じている状態では「+」、開いている状態では「-」が表示されます。

カスタマイズできる内容
index.htmlでは「FAQ・Q&A向けアコーディオン」のタイトル、説明文、各質問、各回答を変更できます。FAQ項目を追加する場合は、既存のfaq-accordion_itemと同じ構造を追加します。

style.cssでは全体の最大横幅、余白、背景色、枠線、角丸、質問ボタンの内側余白、項目同士の間隔、「Q.」「A.」の文字色、開閉アイコンの色などを変更できます。content:"Q.";content:"A.";content:"+";content:"-";を変更すると、それぞれの表示文字も変更できます。

数値調整
style.css

max-width:700px;
FAQ全体の最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

margin:40px auto;
FAQ全体の上下余白です。40pxを大きくすると上下の間隔が広がります。

padding:32px;
FAQ全体の内側余白です。値を大きくすると内容と外枠の間隔が広がります。

border-radius:18px;
FAQ全体の角丸です。値を大きくすると丸みが強くなります。

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

margin-bottom:12px;
各FAQ項目の下側余白です。値を大きくすると項目同士の間隔が広がります。

border-radius:12px;
各FAQ項目の角丸です。値を大きくすると丸みが強くなります。

padding:16px 18px;
質問ボタンの内側余白です。16pxは上下、18pxは左右の余白です。値を大きくすると質問部分が大きくなります。

gap:12px;
質問文と開閉アイコンの間隔です。値を大きくすると両者の間隔が広がります。

margin-right:8px;
「Q.」と質問文、「A.」と回答文の間隔です。値を大きくすると文字同士の間隔が広がります。

padding:0 18px 18px;
回答部分の内側余白です。左右の18pxを大きくすると文章と外枠の間隔が広がり、下側の18pxを大きくすると回答下部の余白が広がります。

line-height:1.8;
回答文の行間です。値を大きくすると行間が広がり、小さくすると詰まった表示になります。


こちらもおすすめ


コメント