Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Breadcrumb #1

Open
hsskey opened this issue Oct 15, 2024 · 0 comments
Open

Breadcrumb #1

hsskey opened this issue Oct 15, 2024 · 0 comments

Comments

@hsskey
Copy link
Owner

hsskey commented Oct 15, 2024

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

  • μ»΄ν¬λ„ŒνŠΈ 이름: 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"둜 μ„€μ •ν•˜μ—¬ 슀크린 리더 μ‚¬μš©μžμ—κ²Œ λΆˆν•„μš”ν•œ 반볡 ν”Όν•˜λ„λ‘ 함
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant