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

Carousel #7

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

Carousel #7

hsskey opened this issue Oct 23, 2024 · 0 comments

Comments

@hsskey
Copy link
Owner

hsskey commented Oct 23, 2024

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

  • μ»΄ν¬λ„ŒνŠΈ 이름: Carousel
  • μ»΄ν¬λ„ŒνŠΈ μ„€λͺ…: μΊλŸ¬μ…€μ€ μ½˜ν…μΈ λ₯Ό μˆœν™˜ν•˜λ©° ν‘œμ‹œν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλ‘œ, μ‚¬μš©μžκ°€ 이전/λ‹€μŒ ν•­λͺ©μœΌλ‘œ μ΄λ™ν•˜κ±°λ‚˜ νŠΉμ • ν•­λͺ©μ„ 선택할 수 있음
  • μ‚¬μš© 사둀: μ œν’ˆ 이미지, ν”„λ‘œλͺ¨μ…˜ λ°°λ„ˆ, μΆ”μ²œ μƒν’ˆ 등을 μˆœν™˜ν•˜λ©° ν‘œμ‹œν•  λ•Œ μ‚¬μš©

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

  • ARIA Authoring Practices: W3C ARIA Carousel Pattern
    • μžλ™ νšŒμ „ 정지, 이전/λ‹€μŒ 컨트둀, μŠ¬λΌμ΄λ“œ 선택 λ“±μ˜ μ ‘κ·Όμ„± 고렀사항 μ œμ‹œ
  • 기타 레퍼런슀: Ant Design μΊλŸ¬μ…€ μ»΄ν¬λ„ŒνŠΈ 뢄석

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

  • ARIA Pattern 적용: ARIA Carousel Pattern
    • μ‚¬μš©λœ ARIA 속성: aria-roledescription="carousel", aria-label, aria-live="off"(μžλ™ νšŒμ „ μ‹œ) λ˜λŠ” aria-live="polite"(μžλ™ νšŒμ „ 쀑지 μ‹œ), aria-controls, aria-selected 등이 μ‚¬μš©λ¨.
  • μ ‘κ·Όμ„± κ΄€λ ¨ 고렀사항:
    • ν‚€λ³΄λ“œ 초점이 carousel 내뢀에 μ§„μž…ν•˜λ©΄ μžλ™ νšŒμ „ 정지
    • 이전/λ‹€μŒ μ»¨νŠΈλ‘€μ€ ν‚€λ³΄λ“œλ‘œ μ‘°μž‘ κ°€λŠ₯ν•΄μ•Ό 함
    • μžλ™ νšŒμ „ μ‹œμ—λŠ” aria-live="off"λ₯Ό μ‚¬μš©ν•˜μ—¬ λΆˆν•„μš”ν•œ μ—…λ°μ΄νŠΈ μ•Œλ¦Ό 방지
    • μžλ™ νšŒμ „μ΄ μ€‘μ§€λœ μƒνƒœμ—μ„œλŠ” aria-live="polite"λ₯Ό μ‚¬μš©ν•˜μ—¬ μŠ¬λΌμ΄λ“œ λ³€κ²½ 사항 μ•Œλ¦Ό
    • μŠ¬λΌμ΄λ“œ λ³€κ²½ μ‹œ μ΄ˆμ μ„ μœ μ§€ν•˜μ—¬ 슀크린 리더 μ‚¬μš©μžκ°€ μ»¨ν…μŠ€νŠΈλ₯Ό μžƒμ§€ μ•Šλ„λ‘ 함
  • μ ‘κ·Όμ„± κΈ°λŠ₯ μš”μ•½:
    • μžλ™ νšŒμ „ μ œμ–΄, 이전/λ‹€μŒ 및 νŠΉμ • μŠ¬λΌμ΄λ“œλ‘œ 이동, ν˜„μž¬ μŠ¬λΌμ΄λ“œ μƒνƒœ 정보 제곡 λ“±μ˜ κΈ°λŠ₯을 톡해 μ ‘κ·Όμ„± ν–₯상

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

  • HTML μ‹œλ§¨ν‹± νƒœκ·Έ μ‚¬μš©:
    • W3C Example:
      • <section> νƒœκ·Έλ‘œ carousel μ»΄ν¬λ„ŒνŠΈ μ˜μ—­ ν‘œμ‹œ
      • <div> νƒœκ·Έμ™€ ARIA μ—­ν• (role)을 μ‚¬μš©ν•˜μ—¬ μŠ¬λΌμ΄λ“œ λͺ©λ‘κ³Ό 컨트둀 μ˜μ—­ ꡬ뢄
    • Ant Design Example:
      • <div> νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ 전체 carousel μ»΄ν¬λ„ŒνŠΈ ꡬ성
      • 'slick' 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ μŠ¬λΌμ΄λ“œ νŠΈλž™, 컨트둀러 λ“± ꡬ뢄
  • λ§ˆν¬μ—… ꡬ쑰 비ꡐ:
    • W3C Example:
<section id="myCarousel" class="carousel" aria-roledescription="carousel" aria-label="Highlighted television shows">
  <div class="carousel-inner">
    <div class="controls">
      <button class="rotation pause">...</button>
      <button class="previous" aria-controls="myCarousel-items">...</button>
      <button class="next" aria-controls="myCarousel-items">...</button>
    </div>
    <div id="myCarousel-items" class="carousel-items" aria-live="off">
      <div class="carousel-item active" role="group" aria-roledescription="slide" aria-label="1 of 6">...</div>
      <div class="carousel-item" role="group" aria-roledescription="slide" aria-label="2 of 6">...</div>
      ...
    </div>
  </div>
</section>
  • Ant Design Example:
<div class="ant-carousel">
  <div class="slick-slider">
    <div class="slick-list">
      <div class="slick-track">
        <div class="slick-slide slick-active slick-current" aria-hidden="false">...</div>
        <div class="slick-slide" aria-hidden="true">...</div>
        ...
      </div>
    </div>
    <ul class="slick-dots slick-dots-bottom">
      <li class="slick-active"><button>1</button></li>
      <li><button>2</button></li>
      ...
    </ul>
  </div>
</div>
  • Web Dev Example:
<div class="gui-carousel" carousel-pagination="dots" carousel-controls="auto" carousel-scrollbar="auto"
  carousel-snapstop="auto" aria-label="Featured Items Carousel">
  <div class="gui-carousel--scroller">
    <div class="gui-carousel--snap">
      <figure class="animate-visibility captioned-image">
        <img loading="lazy" width="1280" height="720" src="https://picsum.photos/seed/this/1280/720.webp"
          alt="Blue ocean with a large wave">
        <figcaption>
          <a href="#">Learn more about large ocean waves</a>
        </figcaption>
      </figure>
    </div>
    ...
  </div>
</div>
  • ꡬ쑰적 선택 이유:
    • W3CλŠ” <section>, <div>, role 속성 등을 ν™œμš©ν•˜μ—¬ μΊλŸ¬μ…€κ³Ό μŠ¬λΌμ΄λ“œλ₯Ό κ΅¬μ‘°ν™”ν•˜κ³  있음. ARIA 속성을 적극 ν™œμš©ν•˜μ—¬ 접근성을 λ†’μž„
    • Ant Design은 μΊλŸ¬μ…€μ„ <div> νƒœκ·Έμ˜ μ‘°ν•©μœΌλ‘œ κ΅¬μ„±ν•˜κ³ , 'slick' 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ ꡬ뢄함. μŠ¬λΌμ΄λ“œ λ¦¬μŠ€νŠΈμ™€ 인디케이터λ₯Ό λ³„λ„λ‘œ λ§ˆν¬μ—…ν•¨
    • Web DevλŠ” <div>와 μ»€μŠ€ν…€ 속성을 μ‚¬μš©ν•˜μ—¬ μΊλŸ¬μ…€μ„ ꡬ성함. <figure>와 <figcaption>을 μ‚¬μš©ν•˜μ—¬ 이미지와 μΊ‘μ…˜μ„ 의미둠적으둜 λ§ˆν¬μ—…ν•¨

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

  • Ant Design: 'slick' 클래슀λ₯Ό ν™œμš©ν•˜μ—¬ ꡬ쑰λ₯Ό ꡬ성함. μŠ¬λΌμ΄λ“œλŠ” <div>둜, μΈλ””μΌ€μ΄ν„°λŠ” <ul><li>둜 λ§ˆν¬μ—…. ARIA 속성 μ‚¬μš©μ΄ μ œν•œμ μž„
  • Web Dev: μ»€μŠ€ν…€ 속성을 μ‚¬μš©ν•˜μ—¬ μΊλŸ¬μ…€μ˜ λ™μž‘μ„ μ œμ–΄ν•¨. 이미지와 μΊ‘μ…˜μ— μ‹œλ§¨ν‹± νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ 의미둠적 λ§ˆν¬μ—…μ„ κ΅¬ν˜„ν•¨

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

  • μ£Όμš” 섀계 고렀사항:
    • μΊλŸ¬μ…€ μžλ™ μž¬μƒ μ‹œ 접근성을 μœ„ν•΄ μΌμ‹œμ •μ§€ μ»¨νŠΈλ‘€μ„ μ œκ³΅ν•˜κ³ , 초점이 μ»΄ν¬λ„ŒνŠΈ 내뢀에 μžˆμ„ λ•Œ μžλ™ μž¬μƒμ„ 멈좀
    • 이전/λ‹€μŒ μ»¨νŠΈλ‘€μ€ ν‚€λ³΄λ“œλ‘œ μ‘°μž‘ν•  수 μžˆμ–΄μ•Ό ν•˜λ©°, μŠ¬λΌμ΄λ“œ λͺ©λ‘ λ°–μœΌλ‘œ 초점이 μ΄λ™ν•˜μ§€ μ•Šλ„λ‘ 함
    • 인디케이터λ₯Ό 톡해 총 μŠ¬λΌμ΄λ“œ μˆ˜μ™€ ν˜„μž¬ λ³΄μ—¬μ§€λŠ” μŠ¬λΌμ΄λ“œ 정보λ₯Ό 제곡
  • μ½”λ“œ μ˜ˆμ‹œ:
<section class="carousel" aria-roledescription="carousel">
  <h2 id="carousel-heading" class="carousel-heading">Featured Products</h2>
  <div class="carousel-controls">
    <button class="carousel-control prev" aria-controls="carousel-items">
      <span class="icon" aria-hidden="true">&#8249;</span>
      <span class="text">Previous</span>
    </button>
    <button class="carousel-control next" aria-controls="carousel-items">
      <span class="text">Next</span>
      <span class="icon" aria-hidden="true">&#8250;</span>
    </button>
  </div>
  <div class="carousel-inner">
    <ul id="carousel-items" class="carousel-items" aria-live="off">
      <li class="carousel-item active" role="group" aria-roledescription="slide" aria-label="1 of 3">...</li>
      <li class="carousel-item" role="group" aria-roledescription="slide" aria-label="2 of 3">...</li>
      <li class="carousel-item" role="group" aria-roledescription="slide" aria-label="3 of 3">...</li>
    </ul>
  </div>
  <div class="carousel-indicators">
    <button aria-controls="carousel-items" aria-label="Slide 1" aria-selected="true">1</button>
    <button aria-controls="carousel-items" aria-label="Slide 2">2</button>
    <button aria-controls="carousel-items" aria-label="Slide 3">3</button>
  </div>
</section>

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

  • μ ‘κ·Όμ„± ν…ŒμŠ€νŠΈ:
    • 슀크린 리더 μ‚¬μš© μ‹œ μŠ¬λΌμ΄λ“œ μ½˜ν…μΈ  읽기, ν˜„μž¬ μŠ¬λΌμ΄λ“œ 정보 제곡, 이전/λ‹€μŒ 컨트둀 μ‘°μž‘ κ°€λŠ₯ν•œμ§€ 확인
    • ν‚€λ³΄λ“œλ§ŒμœΌλ‘œ μ»΄ν¬λ„ŒνŠΈ λ‚΄ 이동 및 컨트둀 μ‘°μž‘μ΄ κ°€λŠ₯ν•œμ§€ ν…ŒμŠ€νŠΈ
  • λΈŒλΌμš°μ € ν˜Έν™˜μ„± ν…ŒμŠ€νŠΈ: μ£Όμš” λ°μŠ€ν¬νƒ‘/λͺ¨λ°”일 λΈŒλΌμš°μ €μ—μ„œ λ ˆμ΄μ•„μ›ƒ 및 κΈ°λŠ₯ λ™μž‘ μ—¬λΆ€ 확인
  • μ‚¬μš©μž ν”Όλ“œλ°±: λ‹€μ–‘ν•œ μ‚¬μš©μžλ₯Ό λŒ€μƒμœΌλ‘œ μΊλŸ¬μ…€ μ»΄ν¬λ„ŒνŠΈ μ‚¬μš©μ„± ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•˜κ³ , κ°œμ„  사항을 수렴

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

  • κ΄€λ ¨ λ¬Έμ„œ: Ant Design Carousel Component, Web Dev Carousel Example
  • 의견 및 μ œμ•ˆ: 각 μŠ¬λΌμ΄λ“œμ— 헀딩을 μΆ”κ°€ν•˜μ—¬ λ‚΄μš© νŒŒμ•…μ„ λ•λŠ” λ°©μ•ˆ κ³ λ €

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

  • Role, Attribute, State
    • Role: aria-roledescription="carousel", role="group", aria-roledescription="slide" λ“± ν™œμš©
    • Attribute: aria-label, aria-controls, aria-selected λ“± ν™œμš©ν•˜μ—¬ μ»΄ν¬λ„ŒνŠΈ μ—­ν•  및 μƒν˜Έμž‘μš© μ„€λͺ…
    • State: aria-live="off"(μžλ™ νšŒμ „ μ‹œ)와 aria-live="polite"(μžλ™ νšŒμ „ 쀑지 μ‹œ)λ₯Ό μ‚¬μš©ν•˜μ—¬ ν˜„μž¬ μƒνƒœμ— λ”°λ₯Έ μ•Œλ¦Ό μ œμ–΄
  • JavaScript 및 CSS μ‚¬μš© μ—¬λΆ€
    • JavaScript μ‚¬μš© μ—¬λΆ€: μŠ¬λΌμ΄λ“œ μ „ν™˜, μžλ™ μž¬μƒ, 인디케이터 동기화 등을 μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ JavaScript ν™œμš©
    • CSS 적용 사항: overflow: hidden을 μ‚¬μš©ν•˜μ—¬ λ³΄μ΄λŠ” μ˜μ—­ μ™Έ μŠ¬λΌμ΄λ“œ 감좀 처리. transformκ³Ό transition을 μ‚¬μš©ν•˜μ—¬ μŠ¬λΌμ΄λ“œ μ „ν™˜ μ• λ‹ˆλ©”μ΄μ…˜ κ΅¬ν˜„
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