コピペで完結!モーダルウインドウ#12【お問い合わせフォーム付き】

html/css/js

お問い合わせフォーム付きモーダル

ボタンクリックで開くモーダルウインドウ内にお問い合わせフォームを設置するサンプルです。
氏名・メール・内容を入力でき、送信先(エンドポイント)の設定も可能。
背景スクロールの制御や閉じる操作にも対応しており、シンプルかつ実用的な問い合わせ窓口を手軽に実装できます。

コードについて 本記事のコードは 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; }

コメント