본문 바로가기
명함 만들기 캐릭터 모음 16가지 디자인 · PNG / SVG / PDF

단계 표시

긴 신청서를 여러 장으로 나눴을 때, 지금 몇 번째이고 몇 장이 남았는지 알려 줘야 하는 조각.

내비게이션

실제 미리보기

출처

<nav class="dc-steps" aria-label="입사 지원 단계">
  <ol class="dc-steps__list">
    <li class="dc-steps__item is-done">
      <span class="dc-steps__mark" aria-hidden="true">✓</span>
      <span class="dc-steps__text">
        <span class="dc-steps__num">1단계</span>
        <a class="dc-steps__name dc-steps__link" href="#">본인 확인</a>
      </span>
      <span class="dc-sr">완료</span>
    </li>
    <li class="dc-steps__item is-now" aria-current="step">
      <span class="dc-steps__mark" aria-hidden="true">2</span>
      <span class="dc-steps__text">
        <span class="dc-steps__num">2단계</span>
        <span class="dc-steps__name">경력 입력</span>
      </span>
      <span class="dc-sr">지금 하는 단계</span>
    </li>
    <li class="dc-steps__item">
      <span class="dc-steps__mark" aria-hidden="true">3</span>
      <span class="dc-steps__text">
        <span class="dc-steps__num">3단계</span>
        <span class="dc-steps__name">서류 올리기</span>
      </span>
    </li>
    <li class="dc-steps__item">
      <span class="dc-steps__mark" aria-hidden="true">4</span>
      <span class="dc-steps__text">
        <span class="dc-steps__num">4단계</span>
        <span class="dc-steps__name">최종 확인</span>
      </span>
    </li>
  </ol>
</nav>
.dc-steps { font-family:var(--dc-font); }
.dc-steps__list { display:flex; flex-wrap:wrap; margin:0; padding:0; list-style:none; }
.dc-steps__item { position:relative; flex:1 1 150px; display:flex; flex-direction:column; gap:var(--dc-2); min-width:0; padding:var(--dc-1) var(--dc-4) var(--dc-3) 0; }
.dc-steps__item::after { content:""; position:absolute; top:17px; left:36px; right:var(--dc-2); height:2px; border-radius:var(--dc-r-full); background:var(--dc-line-bold); }
.dc-steps__item:last-child::after { content:none; }
.dc-steps__item.is-done::after { background:var(--dc-brand); }
.dc-steps__mark { display:flex; align-items:center; justify-content:center; width:28px; height:28px; border:2px solid var(--dc-line-bold); border-radius:var(--dc-r-full); background:var(--dc-surface); font-size:13px; font-weight:700; line-height:1; color:var(--dc-text-sub); }
.dc-steps__item.is-done .dc-steps__mark { border-color:var(--dc-brand); background:var(--dc-brand); color:var(--dc-text-on); }
.dc-steps__item.is-now .dc-steps__mark { border-color:var(--dc-brand); background:var(--dc-brand-soft); color:var(--dc-brand-text); box-shadow:0 0 0 4px var(--dc-brand-soft); }
.dc-steps__item.is-error .dc-steps__mark { border-color:var(--dc-danger); background:var(--dc-danger-soft); color:var(--dc-danger); }
.dc-steps__text { display:flex; flex-direction:column; gap:2px; padding-right:var(--dc-3); }
.dc-steps__num { font-size:12px; color:var(--dc-text-mute); }
.dc-steps__name { font-size:14px; font-weight:600; color:var(--dc-text-sub); }
.dc-steps__item.is-now .dc-steps__name { color:var(--dc-text); }
.dc-steps__item.is-error .dc-steps__name { color:var(--dc-danger); }
.dc-steps__link { color:var(--dc-brand-text); text-decoration:underline; text-underline-offset:.15em; }
.dc-steps__link:hover { color:var(--dc-text); }
.dc-steps__msg { margin:0; font-size:12px; font-weight:600; color:var(--dc-danger); }
.dc-steps--v .dc-steps__list { flex-direction:column; }
.dc-steps--v .dc-steps__item { flex:0 0 auto; flex-direction:row; align-items:flex-start; gap:var(--dc-3); padding:0 0 var(--dc-5) 0; }
.dc-steps--v .dc-steps__item::after { top:34px; bottom:var(--dc-1); left:13px; right:auto; width:2px; height:auto; }
.dc-steps--v .dc-steps__text { padding-top:var(--dc-1); }

이렇게 씁니다

  • 단계는 3~5개로 끊는다 — 그보다 많으면 끝이 보이지 않아 중간에 그만둔다
  • 지난 단계는 눌러서 되돌아갈 수 있게 두고, 오지 않은 단계는 누르지 못하게 한다
  • 단계 이름은 '2단계'가 아니라 '경력 입력'처럼 무엇을 하는 자리인지로 쓴다

주의할 점

  • 현재 단계에 aria-current="step" 을 붙인다 — 색만으로는 어디인지 읽어 주지 않는다
  • 좁은 화면에서 네 단계가 한 줄에 들어가지 않으면 세로형으로 바꾼다

다음에 볼 것