[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です。