入力フォーム用ステップ式タブ
長い入力フォームを「ステップ式」に分けて進められるタブ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; } */
}
コメント