[CSS] フォームの入力ステップを表示したい
- フォームの入力画面で、フォームの送信完了までのステップを表示しているサイトがあります
- 今の操作を正常に終えるまでどれくらいの工程をはさむのかユーザーに伝えることで、操作途中の離脱を防止する、操作の完了を簡潔に伝えるという効果が見込めます
サンプルコード
html
<ol class="form_step">
<li class="form_step_now">入力</li>
<li>内容確認</li>
<li>送信</li>
<li>送信完了</li>
</ol>
CSS
.form_step {
display: flex;
justify-content: center;
align-items: center;
list-style: none;
}
.form_step > li {
display: block;
position: relative;
padding: 1em;
width: 22%;
border: 1px solid currentColor;
font-size: 1.5vw;
font-weight: bold;
text-align: center;
color: #3388dd;
}
.form_step > li:nth-of-type(n + 2) {
margin: 0px 0px 0px 4%;
}
.form_step > li:nth-of-type(n + 2)::before {
position: absolute;
top: 50%;
left: -1.5em;
width: 0.5em;
height: 0.5em;
border-top: 2px solid #3388dd;
border-left: 2px solid #3388dd;
transform: translateY(-50%) rotate(135deg);
content: "";
}
.form_step > li.form_step_now{
color: #fff;
background-color: #3388dd;
}
@media print, (min-width: 992px) {
.form_step > li {
font-size: 18px;
}
}
仕組み、解説、補足など
- ステップは順序をもった項目とも言えるので、olタグを使っています
- 表示する画面に応じて「form_step_now」クラスを付け替えて現在の工程を表します
- レスポンシブ表示時には縦並びにしたいところですが、縦長にすることでかえってユーザーのスクロール操作が多くなり、ともすれば離脱要因になってしまったら目も当てられません
- なので、フォントサイズを画面幅に合わせて拡縮するようにしています
ご質問など受け付けています
記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。
ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。