Skip to content

BreadcrumbΒ #1

@hsskey

Description

@hsskey

πŸ“‹ μ»΄ν¬λ„ŒνŠΈ 정보

  • μ»΄ν¬λ„ŒνŠΈ 이름: Breadcrumb
  • μ»΄ν¬λ„ŒνŠΈ μ„€λͺ…: λΈŒλ ˆλ“œν¬λŸΌμ€ μ‚¬μš©μžκ°€ ν˜„μž¬ μœ„μΉ˜μ™€ μ‚¬μ΄νŠΈμ˜ ꡬ쑰λ₯Ό μ‰½κ²Œ μ΄ν•΄ν•˜κ³  이동할 수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” λ‚΄λΉ„κ²Œμ΄μ…˜ μ»΄ν¬λ„ŒνŠΈ
  • μ‚¬μš© 사둀: νŽ˜μ΄μ§€ 계측 ꡬ쑰λ₯Ό λ‚˜νƒ€λ‚΄μ–΄ μ‚¬μš©μžκ°€ μƒμœ„ νŽ˜μ΄μ§€λ‘œ 이동할 수 μžˆλ„λ‘ 지원. 일반적으둜 νŽ˜μ΄μ§€ 상단에 배치

πŸ“š μ°Έμ‘° 및 레퍼런슀

  • ARIA Authoring Practices: W3C ARIA Patters
    • κ΄€λ ¨ νŒ¨ν„΄ 및 적용된 μ ‘κ·Όμ„± κΈ°μ€€ 확인
  • 기타 레퍼런슀: Spectrum, MUI, Ant Design λ“±μ˜ λ¬Έμ„œμ™€ λΉ„κ΅ν•˜μ—¬ νŒ¨ν„΄ 뢄석

πŸ“ μ ‘κ·Όμ„± 및 ARIA 적용 μ—¬λΆ€

  • ARIA Pattern 적용: ARIA Pattern 링크
    • μ‚¬μš©λœ ARIA 속성: role="navigation", aria-label="Breadcrumb", aria-current="page" 등이 μ‚¬μš©λ¨. role="navigation"은 λ‚΄λΉ„κ²Œμ΄μ…˜ 역할을 λͺ…μ‹œν•˜λ©°, aria-label="Breadcrumb"λ₯Ό 톡해 슀크린 리더가 μ»΄ν¬λ„ŒνŠΈμ˜ λͺ©μ  인식. λ§ˆμ§€λ§‰ 링크에 aria-current="page" μ μš©ν•΄ ν˜„μž¬ νŽ˜μ΄μ§€ λ‚˜νƒ€λƒ„
  • μ ‘κ·Όμ„± κ΄€λ ¨ 고렀사항: μ‹œκ°μ  κ΅¬λΆ„μžλŠ” CSS둜 μΆ”κ°€λ˜μ–΄ 슀크린 λ¦¬λ”μ—μ„œ λΆˆν•„μš”ν•œ 반볡 ν”Όν•˜κ³ , λ‚΄λΉ„κ²Œμ΄μ…˜ λͺ©μ  λͺ…ν™•νžˆ 전달
  • μ ‘κ·Όμ„± κΈ°λŠ₯ μš”μ•½: μ‹œκ°μ  κ΅¬λΆ„μžλŠ” aria-hidden="true"둜 μ„€μ •λ˜μ–΄ 슀크린 리더 μ‚¬μš©μžμ—κ²Œ μ€‘λ³΅λœ 정보 차단

πŸ—οΈ λ§ˆν¬μ—… ꡬ쑰 뢄석

  • HTML μ‹œλ§¨ν‹± νƒœκ·Έ μ‚¬μš©: <nav>, <ol>, <li>, <a>와 같은 μ‹œλ§¨ν‹± νƒœκ·Έ μ‚¬μš©. <nav>λŠ” λ‚΄λΉ„κ²Œμ΄μ…˜ λͺ©μ  λ‚˜νƒ€λ‚΄κ³ , <ol>κ³Ό <li> 톡해 계측적 ꡬ쑰 λͺ…ν™•νžˆ ν‘œν˜„, 각 ν•­λͺ©μ— <a> νƒœκ·Έ μ‚¬μš©ν•΄ 링크둜 μ—°κ²°
  • λ§ˆν¬μ—… ꡬ쑰 비ꡐ:
// W3C, MUI μ˜ˆμ‹œ
<nav>
  <ol>
    <li>
      <a></a>
    </li>
  </ol>
</nav>

// Web.dev
<nav>
  <a></a>
</nav>
  • ꡬ쑰적 선택 이유:
    • W3C 및 MUI: <nav><ol><li> ꡬ쑰 μ‚¬μš©ν•˜μ—¬ μ‹œλ§¨ν‹±ν•˜κ²Œ νŽ˜μ΄μ§€ 계측 ꡬ쑰λ₯Ό λͺ…ν™•νžˆ ν‘œν˜„. 이λ₯Ό 톡해 슀크린 리더 μ‚¬μš©μžκ°€ ν˜„μž¬ μœ„μΉ˜μ™€ 전체 ꡬ쑰λ₯Ό μ‰½κ²Œ νŒŒμ•…ν•  수 있으며, SEO에도 긍정적인 영ν–₯을 λ―ΈμΉ¨
    • Web.dev: <nav><a> ꡬ쑰 μ‚¬μš©ν•˜μ—¬ 간결함을 μ€‘μ‹œ. 이 μ ‘κ·Ό 방식은 λ‹¨μˆœν•œ νŽ˜μ΄μ§€ ꡬ쑰일 λ•Œ μ ν•©ν•˜λ©°, μΈν„°λž™μ…˜μ΄ ν•„μš” μ—†λŠ” 경우 κ°„κ²°ν•˜κ²Œ ν‘œν˜„ κ°€λŠ₯. 선택지λ₯Ό μ œκ³΅ν•˜λŠ” <select> μš”μ†Œλ₯Ό μΆ”κ°€ν•˜μ—¬ μ‚¬μš©μž κ²½ν—˜μ„ κ°•ν™”

πŸ’‘ UI 라이브러리 비ꡐ 뢄석

  • MUI: <nav><ol><li> ꡬ쑰 μ‚¬μš©ν•΄ μ‹œλ§¨ν‹± μ›Ή 계측적 ꡬ쑰 μœ μ§€ν•˜λ©°, μ ‘κ·Όμ„± ν–₯상 μœ„ν•΄ aria-current와 같은 속성 μΆ”κ°€
  • Web.dev: <nav><a> ꡬ쑰에 좔가적인 μΈν„°λž™μ…˜ μœ„ν•΄ <select> μš”μ†Œ 포함해 선택지 제곡. μ‚¬μš©μžκ°€ λ™μΌν•œ 레벨의 λ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œ λΉ λ₯΄κ²Œ 이동할 수 μžˆλŠ” κΈ°λŠ₯ μΆ”κ°€ν•˜μ—¬ μ‚¬μš©μž κ²½ν—˜ κ°•ν™”ν•  수 있음

βš™οΈ κ΅¬ν˜„ 및 섀계 고렀사항

  • μ£Όμš” 섀계 고렀사항: λΈŒλ ˆλ“œν¬λŸΌ μ»΄ν¬λ„ŒνŠΈλŠ” μ‚¬μš©μžκ°€ ν˜„μž¬ μœ„μΉ˜ λΉ λ₯΄κ²Œ μ΄ν•΄ν•˜κ³  μ‚¬μ΄νŠΈ λ‚΄μ—μ„œ μ‰½κ²Œ 이동 도움. 이λ₯Ό μœ„ν•΄ μ‹œλ§¨ν‹±ν•œ HTML νƒœκ·Έμ™€ μ μ ˆν•œ ARIA 속성 μ μš©ν•˜μ—¬ μ ‘κ·Όμ„± κ°•ν™” μ€‘μš”
  • μ½”λ“œ μ˜ˆμ‹œ:
<nav class="breadcrumbs" role="navigation" aria-label="Breadcrumb">
  <ol>
    <li><a href="/">Home</a></li>
    <li><a href="/category">Category</a></li>
    <li aria-current="page">Current Page</li>
  </ol>
</nav>

πŸ” ν…ŒμŠ€νŠΈ 및 κ²€ν† 

  • μ ‘κ·Όμ„± ν…ŒμŠ€νŠΈ: 슀크린 리더와 ν˜Έν™˜μ„± 및 ν‚€λ³΄λ“œ λ‚΄λΉ„κ²Œμ΄μ…˜ μ‚¬μš©μ„± ν…ŒμŠ€νŠΈ. 각 링크가 적절히 μΈμ‹λ˜λŠ”μ§€, aria-current 속성이 μ˜¬λ°”λ₯΄κ²Œ λ™μž‘ν•˜λŠ”μ§€ 확인
  • λΈŒλΌμš°μ € ν˜Έν™˜μ„± ν…ŒμŠ€νŠΈ: μ£Όμš” λΈŒλΌμš°μ €(Chrome, Firefox, Safari, Edge)μ—μ„œ λΈŒλ ˆλ“œν¬λŸΌμ΄ μ˜¬λ°”λ₯΄κ²Œ λ Œλ”λ§λ˜λŠ”μ§€ 확인
  • μ‚¬μš©μž ν”Όλ“œλ°±: μ‚¬μš©μž ν…ŒμŠ€νŠΈ 톡해 λΈŒλ ˆλ“œν¬λŸΌμ„ ν†΅ν•œ λ‚΄λΉ„κ²Œμ΄μ…˜μ΄ 직관적인지 ν™•μΈν•˜κ³ , κ°œμ„  사항 반영

πŸ“Œ μΆ”κ°€ μ°Έκ³  사항

🎯 μ—­ν• , 속성, μƒνƒœ 및 νƒœκ·Έ 속성

  • Role, Attribute, State
    • Role: role="navigation"으둜 λΈŒλ ˆλ“œν¬λŸΌμ΄ λ‚΄λΉ„κ²Œμ΄μ…˜ μ—­ν•  λͺ…μ‹œ
    • Attribute: aria-label="Breadcrumb"λ₯Ό 톡해 슀크린 리더 μ‚¬μš©μžμ—κ²Œ 이 μš”μ†Œκ°€ λΈŒλ ˆλ“œν¬λŸΌμž„ μ•Œλ¦Ό
    • State: ν˜„μž¬ νŽ˜μ΄μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μš”μ†Œμ— aria-current="page" μ‚¬μš©ν•˜μ—¬ μ‹œκ°μ  및 ν”„λ‘œκ·Έλž¨μ μœΌλ‘œ ν˜„μž¬ μœ„μΉ˜ λͺ…ν™•νžˆ ν‘œμ‹œ
  • JavaScript 및 CSS μ‚¬μš© μ—¬λΆ€
    • JavaScript μ‚¬μš© μ—¬λΆ€: νŠΉμ • μƒν™©μ—μ„œ 선택지 μ œκ³΅ν•˜κΈ° μœ„ν•΄ <select> μš”μ†Œμ™€ JavaScript μ‚¬μš©ν•˜μ—¬ 동적 νŽ˜μ΄μ§€ μ „ν™˜ 지원 κ°€λŠ₯
    • CSS 적용 사항: μ‹œκ°μ  κ΅¬λΆ„μžλŠ” aria-hidden="true"둜 μ„€μ •ν•˜μ—¬ 슀크린 리더 μ‚¬μš©μžμ—κ²Œ λΆˆν•„μš”ν•œ 반볡 ν”Όν•˜λ„λ‘ 함

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions