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

언어 전환

한국어를 잘 모르는 사람이 제 언어를 혼자 찾아야 할 때, 이 하나가 막히면 화면 전체가 막히는 조각.

내비게이션

실제 미리보기

출처

<div class="dc-lang">
  <details class="dc-lang__menu" open>
    <summary class="dc-lang__btn">
      <span class="dc-lang__globe" aria-hidden="true">🌐</span>
      <span class="dc-lang__cur" lang="ko">한국어</span>
      <span class="dc-lang__caret" aria-hidden="true">▾</span>
      <span class="dc-sr">언어 바꾸기 — 지금은 한국어</span>
    </summary>
    <ul class="dc-lang__list">
      <li><a class="dc-lang__item is-now" href="/ko/" lang="ko" hreflang="ko" aria-current="true">한국어<span class="dc-lang__tick" aria-hidden="true">✓</span></a></li>
      <li><a class="dc-lang__item" href="/en/" lang="en" hreflang="en">English</a></li>
      <li><a class="dc-lang__item" href="/vi/" lang="vi" hreflang="vi">Tiếng Việt</a></li>
      <li><a class="dc-lang__item" href="/ne/" lang="ne" hreflang="ne">नेपाली</a></li>
      <li><a class="dc-lang__item" href="/km/" lang="km" hreflang="km">ភាសាខ្មែរ</a></li>
      <li><a class="dc-lang__item" href="/id/" lang="id" hreflang="id">Bahasa Indonesia</a></li>
    </ul>
  </details>
</div>
.dc-lang { position:relative; font-family:var(--dc-font); }
.dc-lang__menu { display:inline-block; }
.dc-lang__btn { display:inline-flex; align-items:center; gap:var(--dc-2); min-height:44px; padding:var(--dc-2) var(--dc-4); border:1px solid var(--dc-line-field); border-radius:var(--dc-r-full); background:var(--dc-surface); font-size:14px; font-weight:600; color:var(--dc-text); cursor:pointer; }
.dc-lang__btn:hover { background:var(--dc-sunken); }
.dc-lang__btn::-webkit-details-marker { display:none; }
.dc-lang__caret { font-size:11px; color:var(--dc-text-sub); transition:transform var(--dc-fast); }
.dc-lang__menu[open] .dc-lang__caret { transform:rotate(180deg); }
.dc-lang__globe { font-size:15px; line-height:1; }
.dc-lang__cur { line-height:1.2; }
.dc-lang__list { position:absolute; z-index:10; min-width:200px; margin:var(--dc-1) 0 0; padding:var(--dc-1); border:1px solid var(--dc-line); border-radius:var(--dc-r-md); background:var(--dc-surface); box-shadow:var(--dc-sh-2); list-style:none; }
.dc-lang__item { display:flex; align-items:center; justify-content:space-between; gap:var(--dc-3); min-height:44px; padding:var(--dc-2) var(--dc-3); border-radius:var(--dc-r-sm); color:var(--dc-text); font-size:14px; text-decoration:none; }
.dc-lang__item:hover { background:var(--dc-sunken); }
.dc-lang__item.is-now { background:var(--dc-brand-soft); color:var(--dc-brand-text); font-weight:700; }
.dc-lang__tick { font-size:13px; line-height:1; }
.dc-lang--inline .dc-lang__row { display:flex; flex-wrap:wrap; gap:var(--dc-2); margin:0; padding:0; list-style:none; }
.dc-lang__chip { display:inline-flex; align-items:center; gap:var(--dc-1); min-height:40px; padding:var(--dc-2) var(--dc-4); border:1px solid var(--dc-line-field); border-radius:var(--dc-r-full); background:var(--dc-surface); color:var(--dc-text-sub); font-size:13px; text-decoration:none; }
.dc-lang__chip:hover { border-color:var(--dc-text-sub); background:var(--dc-sunken); color:var(--dc-text); }
.dc-lang__chip.is-now { border-color:var(--dc-brand); background:var(--dc-brand-soft); color:var(--dc-brand-text); font-weight:700; }
.dc-lang--form { display:flex; flex-wrap:wrap; align-items:flex-end; gap:var(--dc-2); }
.dc-lang__label { display:block; width:100%; margin-bottom:var(--dc-1); font-size:12px; font-weight:600; color:var(--dc-text-sub); }
.dc-lang__select { min-height:44px; padding:var(--dc-2) var(--dc-3); border:1px solid var(--dc-line-field); border-radius:var(--dc-r-sm); background:var(--dc-surface); color:var(--dc-text); font-size:14px; }
.dc-lang__go { min-height:44px; padding:var(--dc-2) var(--dc-4); border:1px solid var(--dc-brand); border-radius:var(--dc-r-sm); background:var(--dc-brand); color:var(--dc-text-on); font-size:14px; font-weight:700; }
.dc-lang__go:hover { background:var(--dc-brand-hi); border-color:var(--dc-brand-hi); }

이렇게 씁니다

  • 언어 이름은 그 언어로 쓴다 — 'Vietnamese' 가 아니라 'Tiếng Việt'
  • 국기를 쓰지 않는다. 나라와 언어는 같지 않다
  • 고른 언어는 ✓ 같은 모양으로도 표시한다. 색만으로 현재를 알리지 않는다

주의할 점

  • 각 항목에 lang 과 hreflang 을 붙인다 — 스크린 리더가 그 언어의 발음으로 읽는다
  • 바꾼 뒤에도 보고 있던 페이지에 머무른다. 첫 화면으로 돌려보내지 않는다

다음에 볼 것