モーダルウインドウを表示するトグルスイッチを作る方法
モーダルウインドウを表示するトグルスイッチを作る方法を紹介します。このサンプルでは、トグルスイッチをONにすると画面中央へモーダルウインドウを表示し、モーダル内の「閉じる」ボタンをクリックするとモーダルを閉じると同時にスイッチをOFFへ戻します。ボタンではなくON・OFFを切り替える操作からモーダルを表示したい場合に利用できます。
管理画面の設定項目、会員サイトの機能設定、ECサイトのオプション設定など、スイッチの状態変更に合わせて追加情報や確認内容を表示したい場面に適しています。モーダルウインドウは基本形と同じく画面中央へ表示し、背景を暗くするオーバーレイや外側クリックによる閉じる処理は使用しません。トグルスイッチによる表示操作だけを追加しているため、動作の仕組みも確認しやすい構成です。
HTMLではトグルスイッチとモーダルウインドウの内容、CSSではスイッチのON・OFF状態やモーダルの横幅、余白、色、角丸などを変更できます。JavaScriptではチェックボックスの状態を確認してモーダルの表示を切り替えます。画面幅640px以下では余白を小さくするレスポンシブ対応も行っているため、スマートフォン・タブレット・PCで利用できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
トグルスイッチをONにすると、モーダルウインドウが表示されます。
トグルスイッチをONにしたため、モーダルウインドウが表示されました。
トグルスイッチをONにすると、画面中央にモーダルウインドウが表示されます。「閉じる」ボタンをクリックするとモーダルが閉じ、トグルスイッチもOFFへ戻ります。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コード -->
<meta charset="UTF-8">
<!-- スマートフォン対応 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ページタイトル -->
<title>モーダルウインドウを表示するトグルスイッチ</title>
<!-- CSSファイル -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- トグルスイッチ表示エリア -->
<div class="toggle-modal-window_wrap">
<!-- タイトル -->
<div class="toggle-modal-window_title">
お知らせ表示
</div>
<!-- 説明文 -->
<p class="toggle-modal-window_text">
トグルスイッチをONにすると、モーダルウインドウが表示されます。
</p>
<!-- トグルスイッチ設定項目 -->
<div class="toggle-modal-window_setting">
<!-- 設定名 -->
<label class="toggle-modal-window_setting-name" for="toggle-modal-window-input">
モーダルを表示する
</label>
<!-- トグルスイッチ -->
<div class="toggle-modal-window_control">
<!-- ON・OFFを管理するチェックボックス -->
<input class="toggle-modal-window_input" id="toggle-modal-window-input" type="checkbox">
<!-- トグルスイッチの外観 -->
<label class="toggle-modal-window_switch" for="toggle-modal-window-input" aria-label="モーダルウインドウの表示を切り替える">
</label>
</div>
</div>
</div>
<!-- モーダルウインドウ -->
<div class="toggle-modal-window_modal" id="toggle-modal-window-modal" role="dialog" aria-modal="true" aria-labelledby="toggle-modal-window-modal-title">
<!-- モーダルタイトル -->
<div class="toggle-modal-window_modal-title" id="toggle-modal-window-modal-title">
お知らせ
</div>
<!-- モーダル説明文 -->
<p class="toggle-modal-window_modal-text">
トグルスイッチをONにしたため、モーダルウインドウが表示されました。
</p>
<!-- 閉じるボタン -->
<button class="toggle-modal-window_close" id="toggle-modal-window-close" type="button">
閉じる
</button>
</div>
<!-- JavaScriptファイル -->
<script src="script.js"></script>
</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。 サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。
InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではトグルスイッチとモーダルウインドウを配置し、CSSではトグルスイッチのON・OFF状態とモーダルのデザインを設定します。JavaScriptではトグルスイッチの状態を確認し、ONの場合はモーダルを表示、OFFの場合は非表示にします。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlはトグルスイッチとモーダルウインドウを構成するファイルです。「お知らせ表示」のタイトル、説明文、設定名、モーダルタイトル、モーダル内の文章、「閉じる」ボタンの文字を変更できます。
style.cssはトグルスイッチ表示エリア、ON・OFFを表すスイッチ、モーダルウインドウ、閉じるボタンのデザインを設定するファイルです。横幅、余白、色、角丸、文字サイズ、影などを変更できます。
script.jsはトグルスイッチとモーダルウインドウを連動させるファイルです。スイッチがONになるとモーダルへis-activeクラスを追加し、OFFになると削除します。「閉じる」ボタンをクリックした場合はモーダルを非表示にし、トグルスイッチもOFFへ戻します。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。index.htmlからstyle.cssとscript.jsが読み込まれます。「モーダルを表示する」のトグルスイッチをONにすると画面中央へモーダルウインドウが表示されます。「閉じる」ボタンをクリックするとモーダルが閉じ、トグルスイッチもOFFへ戻ります。
カスタマイズできる内容
index.htmlでは表示エリアのタイトルや説明文、トグルスイッチ横の設定名、モーダルタイトル、モーダル内の文章、「閉じる」ボタンの文字を変更できます。style.cssではトグルスイッチのOFF時・ON時の色、スイッチの大きさ、モーダルの最大横幅、余白、角丸、背景色、影などを用途に合わせて変更できます。
数値調整
style.css
max-width:700px;
トグルスイッチ表示エリアの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。
margin:40px auto;
表示エリアの上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。
padding:32px;
表示エリアの内側余白です。値を大きくすると内容と枠線の間隔が広がり、小さくすると詰まった表示になります。
border-radius:18px;
表示エリアの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
表示エリアとモーダルのタイトルに使用している文字サイズです。値を大きくすると文字が大きくなり、小さくすると控えめになります。
gap:20px;
設定名とトグルスイッチの間隔です。値を大きくすると間隔が広がり、小さくすると近くなります。
padding:18px 20px;
トグルスイッチ設定項目の内側余白です。上下の18pxを大きくすると設定項目が高くなり、左右の20pxを大きくすると内容と左右端の間隔が広がります。
width:52px;・height:28px;
トグルスイッチ本体の横幅と高さです。サイズを変更する場合は、内部の丸い部分や移動量も合わせて調整します。
width:22px;・height:22px;
トグルスイッチ内部にある白い丸の大きさです。両方を同じ値にすると円形を維持できます。
transform:translateX(24px);
ONになったときに白い丸を右へ移動する距離です。24pxを大きくすると移動量が増え、小さくすると移動量が減ります。
transition:transform .3s ease;
トグルスイッチ内部の丸が移動する時間です。0.3秒で変化します。値を大きくするとゆっくり、小さくすると速く移動します。
max-width:420px;
モーダルウインドウの最大横幅です。値を大きくするとモーダルが横に広がり、小さくするとコンパクトになります。
padding:28px;
モーダルウインドウの内側余白です。値を大きくすると内容と外周の間隔が広がり、小さくすると狭くなります。
border-radius:18px;
モーダルウインドウの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
box-shadow:0 20px 40px ...
モーダルウインドウの影です。20pxは影の縦方向の位置、40pxはぼかし範囲です。数値を大きくすると影の位置や広がりが大きくなります。
padding:10px 20px;
「閉じる」ボタンの内側余白です。上下の10pxを大きくするとボタンが高くなり、左右の20pxを大きくすると横に広がります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%とmax-width:700pxにより、トグルスイッチ表示エリアが画面幅に合わせて縮小されます。モーダルウインドウはwidth:calc(100% - 40px)とmax-width:420pxを使用し、狭い画面でも左右に余白を残して表示します。また、640px以下では表示エリアをpadding:24px 18px;、設定項目をgap:14px;とpadding:16px;、モーダルをpadding:24px 18px;へ変更しているため、スマートフォン・タブレット・PCで利用できます。
コメント