コピペで完結!タブ切替 #15【入力フォーム用ステップ式タブ】

html/css/js

入力フォーム用ステップ式タブ

長い入力フォームを「ステップ式」に分けて進められるタブUIです。
例:名前 → 住所 → 確認 → 送信、と順を追って入力できるので、利用者は迷わず操作できます。
本記事ではデモとコピペ可能な実装コードをあわせて紹介します。

コードについて 本記事のコードは AI(ChatGPT)による生成をベースに作成・調整しています。ご利用の環境でテストの上ご使用ください。
免責 本コードの利用に伴う不具合・損害について、当サイトは責任を負いません。自己責任にてご利用ください。

デモ

① 基本情報
② 住所
③ 確認

入力内容をご確認ください。

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

/* ============================
   フォーム用タブUI(CSS)
   目的:長い入力フォームをステップごとに分割し、
         タブ切替で進められるようにする見た目の定義
   対象スコープ:#form-tabs 配下のみ
   ============================ */

/* ----------------------------
   タブボタンの横並びコンテナ
   ・タブを横並びにし、間隔と下マージンを付ける
   ---------------------------- */
#form-tabs .tabs{
  display:flex;       /* 横並び(フレックスレイアウト)にする */
  gap:8px;            /* 個々のタブボタンの間隔(8px) */
  margin-bottom:16px; /* タブ列の下に余白(下のパネルと離す) */
}

/* ----------------------------
   個々のタブの基本スタイル
   ・等幅化、押しやすさ、視認性を確保
   ---------------------------- */
#form-tabs .tab{
  flex:1;                 /* すべてのタブを等幅に伸ばす(比率=1) */
  padding:8px;            /* クリックしやすい内側余白 */
  border:1px solid #ccc;  /* 薄い枠線でボタン境界を明示 */
  border-radius:6px;      /* 角丸でやわらかい印象に */
  background:#f8f9fa;     /* 薄いグレー背景(非アクティブ時) */
  cursor:pointer;         /* ホバー時にポインタ形状へ */
  text-align:center;      /* ラベル文字を中央揃えに */
  /* 追加検討:transitionで色変化を滑らかに
     transition: background .2s, border-color .2s, color .2s; */
}

/* ----------------------------
   アクティブタブの見た目
   ・強調色で現在位置を明確にする
   ---------------------------- */
#form-tabs .tab.active{
  background:#0b6bff;  /* 強調(アクセント)背景色 */
  color:#fff;          /* 文字色は白でコントラスト確保 */
  border-color:#0b6bff;/* 枠線も背景色に合わせて統一 */
  /* アクセシビリティ補足:
     コントラスト比が十分か確認。必要なら色を調整してください。 */
}

/* ----------------------------
   パネルのデフォルト状態
   ・非表示にしておき、アクティブ時のみ表示
   ---------------------------- */
#form-tabs .panel{
  display:none; /* JSで .active を付けるまで見せない */
}

/* ----------------------------
   アクティブなパネルの見た目
   ・カード風に枠と余白を与えて読みやすく
   ---------------------------- */
#form-tabs .panel.active{
  display:block;          /* 表示に切替(タブ操作で付与される) */
  border:1px solid #ddd;  /* 薄い枠線で領域を区切る */
  padding:16px;           /* 内側余白で密集感を解消 */
  border-radius:6px;      /* 角丸で視覚的にソフトに */
  /* 追加検討:背景色を白に固定したい場合
     background:#fff; */
}

/* ----------------------------
   ラベル
   ・入力欄の見出しをブロック化し余白を整える
   ---------------------------- */
#form-tabs label{
  display:block;     /* ラベルを行要素として扱う(改行される) */
  margin:12px 0 4px; /* 上12px・下4pxの余白で呼吸スペース確保 */
}

/* ----------------------------
   入力欄
   ・幅・パディングを指定し使いやすく
   ---------------------------- */
#form-tabs input{
  padding:6px;          /* クリック/タップしやすい内側余白 */
  width:100%;           /* 親幅に合わせて広げる(狭い画面でも馴染む) */
  max-width:300px;      /* ただし読みやすさのため最大幅は300pxに制限 */
  /* 追加検討:枠線や角丸を統一したい場合
     border:1px solid #cbd5e1;
     border-radius:6px; */
  /* 追加検討:フォーカスリングの明示
     outline-color:#0b6bff; */
}

/* ----------------------------
   パネル内の操作ボタン行
   ・次へ/戻るボタンの上に余白
   ---------------------------- */
#form-tabs .actions{
  margin-top:16px; /* 入力群とボタン群の間隔を空ける */
}

/* ----------------------------
   ボタン共通
   ・最小の押しやすさと余白、並びの間隔を付与
   ---------------------------- */
#form-tabs button{
  padding:8px 14px;     /* ボタンのタップ領域を確保 */
  margin-right:8px;     /* 横並び時の間隔(最後の一つは無視でOK) */
  cursor:pointer;       /* クリック可能であることを示す */
  /* 追加検討:見た目を主ボタン/副ボタンで切替える場合
     &.primary{ background:#0b6bff; color:#fff; border:1px solid #0b6bff; }
     &.ghost{ background:transparent; color:#0b6bff; border:1px solid #0b6bff; } */
}

コメント