一括でON・OFFできるトグルスイッチを作る方法
一括でON・OFFできるトグルスイッチを作る方法を紹介します。このサンプルでは、複数のトグルスイッチとは別に一括切り替え用のトグルスイッチを配置し、操作するとすべての設定をまとめてONまたはOFFへ変更できます。個別のトグルスイッチは、それぞれ単独でも切り替えられます。
通知設定、メール配信、アプリ通知、サウンド設定など、複数の項目をまとめて管理したい画面に適しています。会員サイトや管理画面、Webアプリの設定ページなどで、利用者が各項目を一つずつ操作する手間を減らせます。一括切り替え用のトグルをOFFにするとすべてOFFになり、ONにするとすべてONになります。
HTMLでは設定項目名や表示するトグルスイッチの数を変更でき、CSSでは横幅、余白、背景色、枠線、角丸、スイッチのサイズやON・OFF時の色を調整できます。JavaScriptでは一括切り替えの対象となるトグルスイッチを指定しています。レスポンシブにも対応しているため、スマートフォン・タブレット・PCで利用できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
一括切り替えを操作すると、すべての通知設定が同じ状態になります。
一括切り替え用のトグルスイッチで、メール通知・SMS通知・アプリ通知をまとめてON・OFFできます。各通知は個別にも切り替えられます。
コードをコピーして使おう!
<!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="bulk-toggle-switch_wrap">
<!-- タイトル -->
<div class="bulk-toggle-switch_title">
通知設定
</div>
<!-- 説明文 -->
<p class="bulk-toggle-switch_text">
一括切り替えを操作すると、すべての通知設定が同じ状態になります。
</p>
<!-- 一括切り替え項目 -->
<div class="bulk-toggle-switch_item bulk-toggle-switch_master">
<!-- 項目名 -->
<span class="bulk-toggle-switch_label-text">
すべて一括で切り替える
</span>
<!-- 一括切り替え用トグルスイッチ -->
<label class="bulk-toggle-switch_switch">
<!-- すべての通知設定をまとめて切り替えるチェックボックス -->
<input
id="bulk-toggle-switch-master"
class="bulk-toggle-switch_checkbox"
type="checkbox"
aria-label="すべての通知設定を一括で切り替える">
<!-- スイッチの背景と丸いノブ -->
<span class="bulk-toggle-switch_slider"></span>
</label>
</div>
<!-- メール通知項目 -->
<div class="bulk-toggle-switch_item">
<!-- 項目名 -->
<span class="bulk-toggle-switch_label-text">
メール通知
</span>
<!-- メール通知用トグルスイッチ -->
<label class="bulk-toggle-switch_switch">
<!-- 一括切り替えの対象となるチェックボックス -->
<input
class="bulk-toggle-switch_checkbox bulk-toggle-switch_target"
type="checkbox"
aria-label="メール通知を切り替える">
<!-- スイッチの背景と丸いノブ -->
<span class="bulk-toggle-switch_slider"></span>
</label>
</div>
<!-- SMS通知項目 -->
<div class="bulk-toggle-switch_item">
<!-- 項目名 -->
<span class="bulk-toggle-switch_label-text">
SMS通知
</span>
<!-- SMS通知用トグルスイッチ -->
<label class="bulk-toggle-switch_switch">
<!-- 一括切り替えの対象となるチェックボックス -->
<input
class="bulk-toggle-switch_checkbox bulk-toggle-switch_target"
type="checkbox"
aria-label="SMS通知を切り替える">
<!-- スイッチの背景と丸いノブ -->
<span class="bulk-toggle-switch_slider"></span>
</label>
</div>
<!-- アプリ通知項目 -->
<div class="bulk-toggle-switch_item">
<!-- 項目名 -->
<span class="bulk-toggle-switch_label-text">
アプリ通知
</span>
<!-- アプリ通知用トグルスイッチ -->
<label class="bulk-toggle-switch_switch">
<!-- 一括切り替えの対象となるチェックボックス -->
<input
class="bulk-toggle-switch_checkbox bulk-toggle-switch_target"
type="checkbox"
aria-label="アプリ通知を切り替える">
<!-- スイッチの背景と丸いノブ -->
<span class="bulk-toggle-switch_slider"></span>
</label>
</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は画面全体を構成するファイルです。一括切り替え用トグル、メール通知・SMS通知・アプリ通知の各トグル、タイトルや説明文を編集できます。
style.cssは画面デザインを設定するファイルです。全体の横幅、余白、背景色、文字色、枠線、角丸、トグルスイッチのサイズや色、アニメーション速度などを変更できます。
script.jsはトグルスイッチの動作を制御するファイルです。一括切り替え時にすべてのトグルを同じ状態へ変更する処理と、個別トグルの状態に応じて一括切り替え用トグルを自動更新する処理を実装しています。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。一括切り替え用トグルを操作すると、すべての通知設定が同じON・OFF状態へ切り替わります。個別のトグルはそれぞれ個別に操作でき、すべてONになると一括切り替え用トグルも自動でONになります。
カスタマイズできる内容
index.htmlではタイトル、説明文、各通知項目の名称を変更できます。メール通知以外にも、お知らせ設定や各種機能の有効・無効など用途に合わせた項目へ変更できます。
style.cssでは全体の横幅、背景色、文字色、余白、角丸、枠線、トグルスイッチのサイズ、ON・OFF時の色、影などを変更できます。デザインに合わせて自由に調整できます。
script.jsでは一括切り替えの対象となるトグルを追加・削除できます。対象となるチェックボックスへ同じクラス名を付けることで、一括操作の対象を増減できます。
数値調整
style.css
max-width:620px;
全体の最大横幅です。値を大きくすると横へ広がり、小さくするとコンパクトになります。
margin:40px auto;
全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。
padding:32px;
全体の内側余白です。値を大きくすると内容と枠線の間隔が広がり、小さくすると詰まった表示になります。
border-radius:18px;
全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
タイトルの文字サイズです。値を大きくすると文字が大きくなり、小さくすると控えめになります。
gap:20px;
項目名とトグルスイッチの間隔です。値を大きくすると広がり、小さくすると近づきます。
width:64px;
トグルスイッチの横幅です。値を大きくすると横長になり、小さくするとコンパクトになります。
height:34px;
トグルスイッチの高さです。値を大きくするとスイッチ全体が大きくなります。
width:26px;
height:26px;
丸いノブの大きさです。値を大きくするとノブが大きくなり、小さくすると小さくなります。
transform:translateX(30px);
ON時にノブを移動する距離です。30pxを変更すると移動量が変わります。
transition:0.3s;
スイッチの色やノブが切り替わる時間です。0.3秒で変化します。値を大きくするとゆっくり、小さくすると速く切り替わります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%とmax-width:620pxにより画面幅に応じてレイアウトが縮小されます。また、640px以下では余白を小さく調整するmedia queryを実装しているため、スマートフォン・タブレット・PCで利用できます。
コメント