パーツ番号 11-02-02 ・ JavaScript使用
ステップ式ウィザードフォーム
進捗バー付きで複数ステップを行き来できる入力フォームです。WordPressの予約や見積もり依頼フォームに最適です。
プレビュー
ソースコード
HTML
<form class="wiz">
<div class="prog"><span class="fill"></span></div>
<div class="steps">
<div class="step is-on"><h4>基本情報</h4><input type="text" placeholder="お名前"><input type="email" placeholder="メール"></div>
<div class="step"><h4>ご希望</h4><input type="text" placeholder="ご希望のプラン"><input type="text" placeholder="ご予算"></div>
<div class="step"><h4>確認</h4><p>内容を確認して送信してください。</p></div>
</div>
<div class="nav">
<button type="button" class="prev-b" disabled>戻る</button>
<span class="count">1 / 3</span>
<button type="button" class="next-b">進む</button>
</div>
</form>CSS
.d11-02-02 .wiz{width:250px}
.d11-02-02 .prog{height:6px;border-radius:6px;background:#e6e6ef;overflow:hidden;margin-bottom:16px}
.d11-02-02 .fill{display:block;height:100%;width:33.3%;background:#5b6ef5;border-radius:6px;transition:width .4s}
.d11-02-02 .step{display:none;flex-direction:column;gap:8px}
.d11-02-02 .step.is-on{display:flex}
.d11-02-02 .step h4{margin:0 0 4px;font-size:15px;color:#26264a}
.d11-02-02 .step input{border:1px solid #d5d5e0;border-radius:8px;padding:8px 10px;font-size:12px}
.d11-02-02 .step p{margin:0;font-size:12px;color:#666;line-height:1.6}
.d11-02-02 .nav{display:flex;align-items:center;justify-content:space-between;margin-top:16px}
.d11-02-02 .nav button{border:0;border-radius:8px;padding:8px 16px;font-size:12px;cursor:pointer;background:#5b6ef5;color:#fff}
.d11-02-02 .nav button:disabled{background:#c9c9d6;cursor:not-allowed}
.d11-02-02 .prev-b{background:#e6e6ef;color:#26264a}
.d11-02-02 .count{font-size:12px;color:#888}JavaScript
(function(){
var r=document.querySelector('#item-11-02-02 .d11-02-02');
var steps=r.querySelectorAll('.step'),fill=r.querySelector('.fill'),count=r.querySelector('.count');
var prev=r.querySelector('.prev-b'),next=r.querySelector('.next-b'),i=0;
r.querySelector('.wiz').addEventListener('submit',function(e){e.preventDefault();});
function upd(){
steps.forEach(function(s,n){s.classList.toggle('is-on',n===i);});
fill.style.width=((i+1)/steps.length*100)+'%';
count.textContent=(i+1)+' / '+steps.length;
prev.disabled=i===0;
next.textContent=i===steps.length-1?'送信':'進む';
}
next.addEventListener('click',function(){if(i<steps.length-1){i++;upd();}else{next.textContent='完了';next.disabled=true;}});
prev.addEventListener('click',function(){if(i>0){i--;next.disabled=false;upd();}});
})();クラス名 .d11-02-02 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。