複数のトグルスイッチのON・OFF状態を取得する方法【HTML/CSS/JavaScript・サンプルコード付き】

トグルスイッチ

複数のトグルスイッチのON・OFF状態を取得する方法

複数のトグルスイッチのON・OFF状態を取得する方法を紹介します。このサンプルでは、複数のトグルスイッチを自由に切り替えたあと、ボタンをクリックするだけで現在のON・OFF状態をJavaScriptでまとめて取得し、一覧として表示できます。どの設定が有効になっているかを一度に確認できるため、設定画面や確認画面などで利用しやすい構成です。

通知設定、会員サイトの各種設定、管理画面の機能選択、ECサイトの配信設定など、複数の項目をまとめて管理する画面で活用できます。各トグルは個別に切り替えられ、取得ボタンを押すとすべての状態を一覧表示するため、フォーム送信前の確認やJavaScriptによるデータ処理にも利用できます。

タイトル、説明文、各設定項目名はHTMLから変更でき、CSSではレイアウトや色、余白、角丸、スイッチサイズなどを調整できます。JavaScriptでは取得対象や表示方法を変更できるため、用途に合わせたカスタマイズも容易です。レスポンシブにも対応しているため、スマートフォン・タブレット・PCでそのまま利用できます。

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

デモ

通知設定

各項目を切り替えたあと、ボタンを押して現在の状態を確認してください。

取得結果
  • ボタンを押すと現在の状態が表示されます。

トグルスイッチを切り替えて「ON・OFF状態を取得」を押すと、4項目の現在の状態を一覧で確認できます。

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

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

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

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

  <!-- ページタイトル -->
  <title>複数のトグルスイッチのON・OFF状態を取得する</title>

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

</head>
<body>

  <!-- トグルスイッチ全体 -->
  <div class="get-toggle-switch-status_wrap">

    <!-- タイトル -->
    <div class="get-toggle-switch-status_title">
      通知設定
    </div>

    <!-- 説明文 -->
    <p class="get-toggle-switch-status_text">
      各項目を切り替えたあと、ボタンを押して現在の状態を確認してください。
    </p>

    <!-- トグルスイッチ一覧 -->
    <div class="get-toggle-switch-status_list">

      <!-- メール通知 -->
      <div class="get-toggle-switch-status_item">

        <label
          class="get-toggle-switch-status_name"
          for="get-toggle-switch-status-email">
          メール通知
        </label>

        <div class="get-toggle-switch-status_control">

          <input
            class="get-toggle-switch-status_input"
            id="get-toggle-switch-status-email"
            type="checkbox"
            data-name="メール通知"
            checked>

          <label
            class="get-toggle-switch-status_switch"
            for="get-toggle-switch-status-email"
            aria-label="メール通知を切り替える">
          </label>

        </div>

      </div>

      <!-- プッシュ通知 -->
      <div class="get-toggle-switch-status_item">

        <label
          class="get-toggle-switch-status_name"
          for="get-toggle-switch-status-push">
          プッシュ通知
        </label>

        <div class="get-toggle-switch-status_control">

          <input
            class="get-toggle-switch-status_input"
            id="get-toggle-switch-status-push"
            type="checkbox"
            data-name="プッシュ通知">

          <label
            class="get-toggle-switch-status_switch"
            for="get-toggle-switch-status-push"
            aria-label="プッシュ通知を切り替える">
          </label>

        </div>

      </div>

      <!-- 通知音 -->
      <div class="get-toggle-switch-status_item">

        <label
          class="get-toggle-switch-status_name"
          for="get-toggle-switch-status-sound">
          通知音
        </label>

        <div class="get-toggle-switch-status_control">

          <input
            class="get-toggle-switch-status_input"
            id="get-toggle-switch-status-sound"
            type="checkbox"
            data-name="通知音"
            checked>

          <label
            class="get-toggle-switch-status_switch"
            for="get-toggle-switch-status-sound"
            aria-label="通知音を切り替える">
          </label>

        </div>

      </div>

      <!-- キャンペーン通知 -->
      <div class="get-toggle-switch-status_item">

        <label
          class="get-toggle-switch-status_name"
          for="get-toggle-switch-status-campaign">
          キャンペーン通知
        </label>

        <div class="get-toggle-switch-status_control">

          <input
            class="get-toggle-switch-status_input"
            id="get-toggle-switch-status-campaign"
            type="checkbox"
            data-name="キャンペーン通知">

          <label
            class="get-toggle-switch-status_switch"
            for="get-toggle-switch-status-campaign"
            aria-label="キャンペーン通知を切り替える">
          </label>

        </div>

      </div>

    </div>

    <!-- 状態取得ボタン -->
    <button
      class="get-toggle-switch-status_button"
      id="get-toggle-switch-status-button"
      type="button">
      ON・OFF状態を取得
    </button>

    <!-- 取得結果 -->
    <div
      class="get-toggle-switch-status_result"
      aria-live="polite">

      <div class="get-toggle-switch-status_result-title">
        取得結果
      </div>

      <ul
        class="get-toggle-switch-status_result-list"
        id="get-toggle-switch-status-result">

        <li class="get-toggle-switch-status_result-item">
          ボタンを押すと現在の状態が表示されます。
        </li>

      </ul>

    </div>

  </div>

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

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

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでは複数のトグルスイッチと結果表示エリアを配置し、CSSでは一覧レイアウトやスイッチのデザインを設定しています。JavaScriptではボタンをクリックしたタイミングで各トグルスイッチのON・OFF状態を取得し、一覧形式で表示します。

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

各ファイルの役割
index.htmlはトグルスイッチ一覧、状態取得ボタン、取得結果表示エリアを配置するファイルです。項目名や初期状態、表示する件数を変更できます。

style.cssは全体レイアウト、カードデザイン、トグルスイッチ、取得結果一覧のデザインを設定するファイルです。色、余白、角丸、サイズ、文字の大きさなどを変更できます。

script.jsは「ON・OFF状態を取得」ボタンが押されたときに、すべてのトグルスイッチの状態を取得して結果一覧へ表示する処理を担当します。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。各トグルスイッチを自由に切り替え、「ON・OFF状態を取得」ボタンをクリックすると、現在の設定内容が一覧で表示されます。

カスタマイズできる内容
index.htmlではタイトル、説明文、トグルスイッチの項目名、初期ON・OFF状態、表示件数を変更できます。用途に合わせて通知設定、権限設定、機能設定などさまざまな画面へ利用できます。

style.cssでは全体の横幅、背景色、余白、枠線、角丸、スイッチのサイズ、ON・OFF時の色、ボタンデザイン、取得結果一覧の表示を変更できます。

script.jsでは取得対象となるトグルスイッチや取得結果の表示方法を変更できます。表示順や取得後の処理も用途に合わせてカスタマイズできます。

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

padding:32px;
全体の内側余白です。値を大きくすると余白が広がり、小さくすると詰まった表示になります。

gap:12px;
各トグルスイッチの間隔です。値を大きくすると項目同士の間隔が広がります。

min-height:64px;
各項目の高さです。値を大きくするとクリックしやすくなり、小さくするとコンパクトになります。

width:52px;
スイッチ本体の横幅です。値を変更するとスイッチ全体のサイズが変わります。

height:28px;
スイッチ本体の高さです。値を変更すると縦方向のサイズが変わります。

width:22px;
丸いボタンのサイズです。値を大きくするとボタンが大きく表示されます。

transform:translateX(24px);
ON時に丸いボタンが移動する距離です。スイッチの横幅に合わせて調整できます。

transition:0.3s;
スイッチやボタンが切り替わる時間です。0.3秒で変化します。値を大きくするとゆっくり、小さくすると速く切り替わります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-width:700pxによって画面幅に合わせて全体サイズが自動調整されます。また、640px以下では内側余白や項目間隔を小さくするメディアクエリを使用しているため、スマートフォン・タブレット・PCでも快適に利用できます。


こちらもおすすめ


コメント