FAQ・Q&A向けトグルスイッチの作り方【HTML/CSS/JavaScript・サンプルコード付き】

トグルスイッチ

FAQ・Q&A向けトグルスイッチの作り方

FAQ・Q&A向けトグルスイッチの作り方を紹介します。このサンプルでは、質問ごとにトグルスイッチを配置し、スイッチをONにすると対応する回答を表示、OFFにすると回答を非表示にします。複数の質問をそれぞれ個別に切り替えられるため、必要な回答だけを確認できるFAQを作成できます。

施設案内やサービス紹介ページのよくある質問、ECサイトの利用案内、会員サイトのヘルプなど、複数のQ&Aをまとめて掲載したい場面に利用できます。質問文とスイッチを横並びに配置し、回答は質問の下へ表示するため、どのスイッチがどの回答に対応しているのか分かりやすい構成です。

質問文や回答文はHTMLから変更でき、CSSではFAQ全体の横幅、余白、背景色、枠線、角丸、トグルスイッチのサイズや色などを調整できます。JavaScriptでは各トグルスイッチの状態を取得し、対応する回答の表示・非表示を切り替えます。レスポンシブにも対応しているため、スマートフォン・タブレット・PCで利用できます。

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

デモ

施設についてよくある質問

確認したい質問のスイッチをONにしてください。

営業時間を教えてください

A. 営業時間は午前9時から午後6時までです。

利用料金はいくらですか?

A. 一般料金は1,000円です。利用内容によって料金が異なる場合があります。

予約は必要ですか?

A. 通常は予約なしで利用できます。

各質問のトグルスイッチをONにすると回答が表示され、OFFにすると非表示になります。

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

<!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>

  <!-- FAQ全体 -->
  <div class="faq-toggle-switch_wrap">

    <!-- タイトル -->
    <div class="faq-toggle-switch_title">
      施設についてよくある質問
    </div>

    <!-- 説明文 -->
    <p class="faq-toggle-switch_text">
      確認したい質問のスイッチをONにしてください。
    </p>

    <!-- FAQ一覧 -->
    <div class="faq-toggle-switch_list">

      <!-- 営業時間 -->
      <div class="faq-toggle-switch_item">

        <div class="faq-toggle-switch_question">

          <div class="faq-toggle-switch_label">
            営業時間を教えてください
          </div>

          <label class="faq-toggle-switch_switch">
            <input
              type="checkbox"
              aria-label="営業時間の回答を表示">
            <span class="faq-toggle-switch_slider"></span>
          </label>

        </div>

        <p class="faq-toggle-switch_answer">
          <strong>A.</strong>
          営業時間は午前9時から午後6時までです。
        </p>

      </div>

      <!-- 利用料金 -->
      <div class="faq-toggle-switch_item">

        <div class="faq-toggle-switch_question">

          <div class="faq-toggle-switch_label">
            利用料金はいくらですか?
          </div>

          <label class="faq-toggle-switch_switch">
            <input
              type="checkbox"
              aria-label="利用料金の回答を表示">
            <span class="faq-toggle-switch_slider"></span>
          </label>

        </div>

        <p class="faq-toggle-switch_answer">
          <strong>A.</strong>
          一般料金は1,000円です。利用内容によって料金が異なる場合があります。
        </p>

      </div>

      <!-- 予約 -->
      <div class="faq-toggle-switch_item">

        <div class="faq-toggle-switch_question">

          <div class="faq-toggle-switch_label">
            予約は必要ですか?
          </div>

          <label class="faq-toggle-switch_switch">
            <input
              type="checkbox"
              aria-label="予約についての回答を表示">
            <span class="faq-toggle-switch_slider"></span>
          </label>

        </div>

        <p class="faq-toggle-switch_answer">
          <strong>A.</strong>
          通常は予約なしで利用できます。
        </p>

      </div>

    </div>

  </div>

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

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

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLで質問、回答、トグルスイッチを配置し、CSSでFAQ全体とスイッチのデザインを設定します。JavaScriptでは各スイッチのON・OFFを取得し、対応する回答の表示・非表示を切り替えます。

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

各ファイルの役割
index.htmlはFAQ・Q&A全体を構成するファイルです。「施設についてよくある質問」のタイトル、説明文、各質問、回答を編集できます。質問ごとにチェックボックスを利用したトグルスイッチを配置しており、それぞれの回答と組み合わせています。

style.cssはFAQ全体とトグルスイッチのデザインを設定するファイルです。全体の横幅や余白、背景色、枠線、角丸、質問と回答の文字サイズ、スイッチの大きさ、ON・OFF時の色などを変更できます。

script.jsは回答の表示・非表示を切り替えるファイルです。各トグルスイッチの状態が変更されたとき、同じFAQ項目内にある回答へis-visibleクラスを付け外しします。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。確認したい質問のトグルスイッチをONにすると、その質問に対応する回答が表示されます。OFFに戻すと回答が非表示になります。各スイッチは独立しているため、複数の回答を同時に表示することもできます。

カスタマイズできる内容
index.htmlではFAQのタイトル、説明文、質問文、「A.」を含む回答文を変更できます。faq-toggle-switch_item単位で項目を追加・削除することで、掲載する質問と回答の数も変更できます。

style.cssではFAQ全体の最大横幅、内側余白、背景色、枠線、角丸、FAQ項目同士の間隔、質問部分の高さや余白を変更できます。また、トグルスイッチの横幅・高さ、OFF時とON時の背景色、スイッチ内部の丸の大きさや移動量、回答文の文字色や余白なども調整できます。

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

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

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

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

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

gap:14px;
FAQ項目同士の間隔です。値を大きくすると各質問の間隔が広がります。

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

min-height:64px;
質問部分の最小高さです。値を大きくすると質問部分が高くなります。

padding:16px 18px;
質問部分の内側余白です。上下の16pxと左右の18pxを変更すると、質問文と枠線の間隔が変わります。

width:58px;height:32px;
トグルスイッチ全体の横幅と高さです。値を変更するとスイッチ本体のサイズが変わります。

width:24px;height:24px;
トグルスイッチ内部にある白い丸のサイズです。値を大きくすると丸が大きくなります。

transform:translateX(26px);
スイッチをONにしたときに白い丸を右方向へ移動させる距離です。26pxを変更すると移動量が変わります。

transition:.3s;
スイッチの色と丸の位置が切り替わる時間です。0.3秒で変化します。値を大きくするとゆっくり、小さくすると速く切り替わります。

padding:0 18px 18px;
回答部分の内側余白です。左右と下側の値を変更すると、回答文と枠線の間隔が変わります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-width:700pxにより、画面幅に合わせてFAQ全体が縮小されます。また、640px以下ではFAQ全体をpadding:24px 18px;、質問部分をpadding:14px;へ変更し、質問文と回答文の文字サイズも15pxへ調整しています。スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント