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

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

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

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

WebサイトのFAQ(よくある質問)やQ&Aでは、質問と回答をまとめて掲載することが多くあります。しかし、すべての回答を最初から表示するとページが長くなり、目的の質問を探しにくくなることがあります。そんなときに便利なのが、質問をクリックすると回答を開閉できるFAQ・Q&A向けアコーディオンです。質問を一覧で表示し、必要な回答だけを開いて確認できるため、情報を整理しながら掲載できます。

今回は、質問の先頭に青色の「Q.」、回答の先頭に「A.」を表示するアコーディオンを作成します。各質問の右側には開閉状態を示す「+」「-」のアイコンを配置し、クリックすると対応する回答が表示・非表示に切り替わります。クリックした項目だけが開閉する仕組みなので、ほかの回答を閉じることなく、複数の回答を同時に表示できます。FAQページや料金案内、サービス説明、お問い合わせ前の確認事項などに利用できるデザインです。

HTMLでは質問と回答を3項目用意し、CSSで白い背景、角丸の枠線、文字色、項目間の余白などを設定します。JavaScriptでは、クリックした質問に対応する項目へis-openクラスを付け外しすることで、回答の表示を切り替えます。質問や回答の文章はHTMLから変更でき、項目の追加や削除も可能です。この記事では、実際に操作できるデモとサンプルコードを使って、FAQ・Q&A向けアコーディオンの作り方と開閉の仕組みを紹介します。

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

デモ

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

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

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

無料のSVGアイコン作成ツールを使って、用途に合ったアイコンを作成できます。

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

<!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などすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
A

Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。

InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。

ファイル構成と設置方法

このサンプルは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;
回答文の行間です。値を大きくすると行間が広がり、小さくすると詰まった表示になります。


こちらもおすすめ


コメント