お問い合わせフォーム付きモーダル
ボタンクリックで開くモーダルウインドウ内にお問い合わせフォームを設置するサンプルです。
氏名・メール・内容を入力でき、送信先(エンドポイント)の設定も可能。
背景スクロールの制御や閉じる操作にも対応しており、シンプルかつ実用的な問い合わせ窓口を手軽に実装できます。
コードについて
本記事のコードは AI(ChatGPT)による生成をベースに作成・調整しています。ご利用の環境でテストの上ご使用ください。
免責 本コードの利用に伴う不具合・損害について、当サイトは責任を負いません。自己責任にてご利用ください。
免責 本コードの利用に伴う不具合・損害について、当サイトは責任を負いません。自己責任にてご利用ください。
デモ
コードをコピーして使おう!
/* ▼お問い合わせフォーム付きモーダルのCSS(全文コメント付き) */
/* ------------------------------------
デモ全体のラッパー
- 横幅を最大960pxに制限して中央寄せ
- 全体の基本フォントと文字色を指定
------------------------------------ */
.demo-wrap{
max-width:960px; /* 横幅の上限 */
margin:0 auto; /* 中央寄せ(左右中央に配置) */
padding:0 16px; /* 左右に16pxの余白を確保 */
font-family:system-ui,"Noto Sans JP",sans-serif; /* 読みやすいフォント */
color:#0f172a; /* 基本文字色(濃いめのネイビー) */
}
/* ------------------------------------
モーダルを開くボタン
- ブルー背景+白文字
- 丸みのある角とカーソル変更
------------------------------------ */
.demo-wrap .open-btn{
padding:10px 16px; /* ボタン内の上下左右余白 */
background:#0b6bff; /* 背景色(鮮やかな青) */
color:#fff; /* 文字色(白) */
border:none; /* デフォルトの枠線を消す */
border-radius:10px; /* 角を丸くする */
cursor:pointer; /* マウスを重ねたときにポインタ表示 */
}
/* ------------------------------------
オーバーレイ背景(黒い半透明の層)
- 初期状態は非表示(display:none)
- .active が付くと表示(display:grid)
- 画面全体を覆う黒幕
------------------------------------ */
.demo-wrap .overlay{
position:fixed; /* ビューポート全体に固定配置 */
inset:0; /* 上下左右を0に → 画面全体をカバー */
background:rgba(0,0,0,.55); /* 半透明の黒背景 */
display:none; /* 初期状態では非表示 */
place-items:center; /* 中央寄せ配置(gridのセンタリング) */
z-index:9999; /* 最前面に表示 */
}
/* activeクラスが付いたときに表示される */
.demo-wrap .overlay.active{ display:grid; }
/* ------------------------------------
ダイアログ本体(白いボックス部分)
- 最大幅720pxで可変
- 内側余白あり、角丸、影付き
------------------------------------ */
.demo-wrap .dialog{
background:#fff; /* 背景色:白 */
border-radius:12px; /* 角を丸く */
padding:28px 32px; /* 内側余白:上下28px、左右32px */
max-width:720px; /* 最大幅を720pxに制限 */
width:min(92vw,720px); /* ビューポート幅が小さい時は92%まで縮む */
box-shadow:0 24px 60px rgba(0,0,0,.28); /* 影を付けて浮き上がらせる */
}
/* ダイアログ内のすべての要素は box-sizing を border-box に統一 */
.demo-wrap .dialog *{ box-sizing:border-box; }
/* ------------------------------------
見出し(フォームタイトル)
------------------------------------ */
.demo-wrap .dialog h3{
margin:0 0 16px; /* 下に16pxの余白 */
font-size:20px; /* 文字サイズ */
font-weight:700; /* 太字 */
}
/* ------------------------------------
入力欄まわり
- ラベルをブロック表示で上に配置
- input/textarea の共通デザイン
------------------------------------ */
.demo-wrap .field{ margin:18px 0; } /* 各フィールド上下の余白 */
.demo-wrap .field label{
display:block; /* ラベルをブロック化して上に表示 */
margin:0 0 8px; /* 下に8pxの余白 */
font-size:16px; /* 文字サイズ */
}
.demo-wrap .field input,
.demo-wrap .field textarea{
display:block; /* 横幅100%で表示 */
width:100%; /* 横幅を親いっぱいに広げる */
padding:12px 14px; /* 内側余白(上下12px 左右14px) */
border:1px solid #cbd5e1; /* 薄いグレーの枠線 */
border-radius:12px; /* 角を丸く */
background:#f8fafc; /* 薄いグレー背景 */
}
/* フォーカス時の効果(青い枠+影を付ける) */
.demo-wrap .field input:focus,
.demo-wrap .field textarea:focus{
border-color:#93c5fd; /* フォーカス時の枠色を水色に */
box-shadow:0 0 0 4px rgba(147,197,253,.35); /* 青い光の影を周囲に付与 */
background:#fff; /* 背景を白に切り替え */
}
/* テキストエリアのみの追加設定 */
.demo-wrap .field textarea{
min-height:160px; /* 最小高さを160pxに固定 */
resize:vertical; /* 縦方向のみリサイズ可能 */
}
/* ------------------------------------
ボタン群(送信・閉じる)
- flexで横並びにし、間隔を空ける
------------------------------------ */
.demo-wrap .actions{
margin-top:18px; /* 上に18px余白を付ける */
display:flex; /* 横並び配置 */
gap:10px; /* ボタン間に10pxの隙間 */
}
/* 送信ボタン */
.demo-wrap .actions .submit{
padding:12px 18px; /* 内側余白(上下12px 左右18px) */
background:#2563eb; /* 濃い青背景 */
color:#fff; /* 白文字 */
border:none; /* 枠線なし */
border-radius:12px; /* 角を丸く */
cursor:pointer; /* カーソルをポインタに */
}
/* 閉じるボタン */
.demo-wrap .actions .close{
padding:12px 18px; /* 内側余白(上下12px 左右18px) */
background:#e2e8f0; /* 薄いグレー背景 */
color:#0f172a; /* 黒文字 */
border:none; /* 枠線なし */
border-radius:12px; /* 角を丸く */
cursor:pointer; /* カーソルをポインタに */
}
/* ------------------------------------
背景スクロール停止
- body に .modal-lock が付与された時
- overflow:hidden でスクロールを無効化
------------------------------------ */
body.modal-lock{ overflow:hidden; }
コメント