ONになっている項目数を表示するトグルスイッチを作る方法【HTML/CSS/JavaScript・サンプルコード付き】

トグルスイッチ

ONになっている項目数を表示するトグルスイッチを作る方法

ONになっている項目数を表示するトグルスイッチを作る方法を紹介します。このサンプルでは、複数のトグルスイッチを配置し、現在ONになっている項目数をリアルタイムで表示します。JavaScriptで各トグルの状態を取得するため、スイッチを切り替えるたびに表示中の件数が自動で更新されます。

通知設定、権限設定、公開設定、機能の有効・無効など、複数の設定項目を管理する画面で活用できます。利用者は現在いくつの項目が有効になっているかを一目で確認できるため、設定内容を把握しやすくなります。管理画面や会員サイト、Webサービスの設定ページなどにも導入しやすい構成です。

タイトル、説明文、設定項目名はHTMLから変更できます。CSSでは色、余白、角丸、サイズなどを自由に調整でき、JavaScriptでは集計対象となるトグルをそのまま利用して件数を表示します。レスポンシブにも対応しているため、スマートフォン・タブレット・PCで利用しやすいサンプルです。

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

デモ

通知設定

トグルスイッチを切り替えると、現在ONになっている項目数を表示します。

メール通知
プッシュ通知
通知音
キャンペーン通知
ONになっている項目数:2

各トグルスイッチを切り替えると、ONになっている項目数がリアルタイムで更新されます。

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

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

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

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

  <!-- ページタイトル -->
  <title>ONになっている項目数を表示するトグルスイッチ</title>

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

</head>
<body>

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

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

    <!-- 説明文 -->
    <p class="toggle-switch-count-on_text">
      トグルスイッチを切り替えると、現在ONになっている項目数を表示します。
    </p>

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

      <!-- メール通知 -->
      <div class="toggle-switch-count-on_item">

        <label
          class="toggle-switch-count-on_name"
          for="toggle-switch-count-on-email">
          メール通知
        </label>

        <div class="toggle-switch-count-on_control">

          <input
            class="toggle-switch-count-on_input"
            id="toggle-switch-count-on-email"
            type="checkbox"
            checked>

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

        </div>

      </div>

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

        <label
          class="toggle-switch-count-on_name"
          for="toggle-switch-count-on-push">
          プッシュ通知
        </label>

        <div class="toggle-switch-count-on_control">

          <input
            class="toggle-switch-count-on_input"
            id="toggle-switch-count-on-push"
            type="checkbox">

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

        </div>

      </div>

      <!-- 通知音 -->
      <div class="toggle-switch-count-on_item">

        <label
          class="toggle-switch-count-on_name"
          for="toggle-switch-count-on-sound">
          通知音
        </label>

        <div class="toggle-switch-count-on_control">

          <input
            class="toggle-switch-count-on_input"
            id="toggle-switch-count-on-sound"
            type="checkbox"
            checked>

          <label
            class="toggle-switch-count-on_switch"
            for="toggle-switch-count-on-sound"
            aria-label="通知音を切り替える">
          </label>

        </div>

      </div>

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

        <label
          class="toggle-switch-count-on_name"
          for="toggle-switch-count-on-campaign">
          キャンペーン通知
        </label>

        <div class="toggle-switch-count-on_control">

          <input
            class="toggle-switch-count-on_input"
            id="toggle-switch-count-on-campaign"
            type="checkbox">

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

        </div>

      </div>

    </div>

    <!-- ONになっている項目数 -->
    <div
      class="toggle-switch-count-on_result"
      aria-live="polite">

      ONになっている項目数:
      <span
        class="toggle-switch-count-on_number"
        id="toggle-switch-count-on-value">
        2
      </span>
      件

    </div>

  </div>

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

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

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでは複数のトグルスイッチとON件数を表示するエリアを配置し、CSSではトグルスイッチや一覧のデザインを設定します。JavaScriptでは各トグルスイッチのON・OFF状態を取得し、現在ONになっている項目数をリアルタイムで集計して画面へ表示します。

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

各ファイルの役割
index.htmlはトグルスイッチ一覧とON件数を表示するHTMLを定義するファイルです。タイトル、説明文、項目名、初期状態を変更できます。

style.cssは一覧全体やトグルスイッチ、件数表示のデザインを設定するファイルです。色、余白、サイズ、角丸、影、文字サイズなどを自由に変更できます。

script.jsは各トグルスイッチの状態を取得し、ONになっている項目数を数えて表示を更新するファイルです。トグルを切り替えるたびに件数が自動で更新されます。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。トグルスイッチをON・OFFすると、現在ONになっている項目数がリアルタイムで更新されます。

カスタマイズできる内容
index.htmlではタイトル、説明文、各トグルスイッチの項目名、チェックボックスの初期ON・OFF状態を変更できます。設定項目を追加・削除することで、用途に合わせた一覧を作成できます。

style.cssではカード全体の横幅、背景色、余白、枠線、角丸、文字サイズ、トグルスイッチのサイズや色、件数表示のデザインなどを変更できます。

script.jsでは集計対象となるトグルスイッチを取得し、ON件数を表示する処理を編集できます。表示形式を変更したい場合は、件数表示部分の内容を変更することで対応できます。

数値調整
style.css

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

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

gap:12px;
各項目の間隔です。値を大きくすると項目同士の間隔が広がり、小さくすると狭くなります。

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

width:52px;
トグルスイッチの横幅です。値を変更するとスイッチ全体の大きさが変わります。

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

transform:translateX(24px);
ONになったときの丸いボタンの移動量です。値を変更するとスライドする距離が変わります。

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

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-width:700pxにより画面幅に応じてレイアウトが縮小されます。また、640px以下では内側余白や項目の余白を調整しているため、スマートフォン・タブレット・PCでも見やすく利用できます。


こちらもおすすめ


コメント