-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
π μ»΄ν¬λνΈ μ 보
- μ»΄ν¬λνΈ μ΄λ¦: Accordion
- μ»΄ν¬λνΈ μ€λͺ : μμ½λμΈμ μ¬λ¬ κ°μ μΉμ μ΄ ν¬ν¨λ μΈν°λν°λΈ ν€λ©μΌλ‘, κ° ν€λ©μ ν΄λ¦νλ©΄ ν΄λΉ μΉμ μ μ½ν μΈ κ° νμ₯λκ±°λ μΆμλλ μ»΄ν¬λνΈ
- μ¬μ© μ¬λ‘: μ¬λ¬ μΉμ μ μ½ν μΈ λ₯Ό ν νμ΄μ§μμ κ°λ¨ν κ΄λ¦¬νκ±°λ μ€ν¬λ‘€μ μ€μ΄κ³ μ ν λ μ¬μ©λ¨. μλ₯Ό λ€μ΄, FAQ νμ΄μ§λ μ¬λ¬ μ€μ νλͺ©μ νλμ νλ©΄μμ 보기 μ½κ² ꡬμ±ν λ μ μ©
π μ°Έμ‘° λ° λ νΌλ°μ€
- ARIA Authoring Practices: W3C ARIA Patterns
- κ΄λ ¨ ν¨ν΄ λ° μ μ©λ μ κ·Όμ± κΈ°μ€ νμΈ
- κΈ°ν λ νΌλ°μ€: MUI, Ant Design λ±μ λ¬Έμμ λΉκ΅νμ¬ ν¨ν΄ λΆμ
π μ κ·Όμ± λ° ARIA μ μ© μ¬λΆ
- ARIA Pattern μ μ©: ARIA Pattern λ§ν¬
- μ¬μ©λ ARIA μμ±:
role="button",aria-expanded,aria-controls,role="region"λ±μ΄ μ¬μ©λκ³role="button"μ ν΄λ¦ κ°λ₯ν μμ½λμΈ ν€λλ₯Ό λνλ΄λ©°,aria-expandedμμ±μ ν΅ν΄ νμ₯ μ¬λΆλ₯Ό λͺ μ.aria-controlsλ ν€λμ κ΄λ ¨λ ν¨λμ μ°κ²°νλ©°,role="region"μ ν΅ν΄ νΉμ ν¨λμ μ½ν μΈ λ₯Ό ꡬλΆ
- μ¬μ©λ ARIA μμ±:
- μ κ·Όμ± κ΄λ ¨ κ³ λ €μ¬ν: ν€λ³΄λ μ¬μ© λ° ν¬μ»€μ€ μ΄λμ κ³ λ €ν΄μΌ νλ©°,
aria-labelledbyμ κ°μ μμ±μ νμ©ν΄ κ° ν¨λμ΄ μ½κ² νμ κ°λ₯νλλ‘ ν΄μΌ νλ©° νλμ ν¨λλ§ νμ₯λλλ‘ νκ±°λ λͺ¨λ ν¨λμ νμ₯ν μ μλλ‘ μ€κ³ κ°λ₯ - μ κ·Όμ± κΈ°λ₯ μμ½: νμ¬ νμ±νλ ν€λλ
aria-expanded="true"λ‘ μ€μ νκ³ , ν΄λΉ ν¨λμ΄ λͺ νν μΈμλ μ μλλ‘role="region"μ ν΅ν΄ μ κ·Όμ±μ κ°ν.
ποΈ λ§ν¬μ ꡬ쑰 λΆμ
- HTML μλ§¨ν± νκ·Έ μ¬μ©:
<div>λ΄μrole="button",aria-expanded,role="region"λ±μ μ¬μ©ν΄ μ맨ν±ν ꡬ쑰λ₯Ό μ 곡. κ° ν€λλaria-controlsμμ±μ ν΅ν΄ νΉμ ν¨λκ³Ό μ°κ²°λκ³ , νμ±ν μνλ₯Ό λνλ΄κΈ° μν΄aria-expandedμμ±μ μ¬μ©. - λ§ν¬μ ꡬ쑰 λΉκ΅:
// W3C μμ
<div class="accordion">
<h3>
<button type="button" aria-expanded="false" aria-controls="sect1" id="accordion1id">Section 1</button>
</h3>
<div id="sect1" role="region" aria-labelledby="accordion1id" hidden>
<p>Section 1 Content</p>
</div>
</div>
// MUI μμ
<div class="MuiAccordion-root">
<div class="MuiAccordionSummary-root">
<button aria-expanded="false" aria-controls="panel1" id="panel1-header">Panel 1</button>
</div>
<div id="panel1" role="region" aria-labelledby="panel1-header" hidden>
<p>Content of Panel 1</p>
</div>
</div>
// Ant Design μμ
<div class="ant-collapse">
<div class="ant-collapse-item">
<div class="ant-collapse-header" role="button" aria-expanded="false" aria-controls="panel1">
<span>Panel 1</span>
</div>
<div id="panel1" role="region" hidden>
<p>Content of Panel 1</p>
</div>
</div>
</div>- ꡬ쑰μ μ ν μ΄μ :
- W3C, MUI λ° Ant Design: λͺ¨λ μλ§¨ν± μΉ μ κ·Όμ±μ μ μ§νκΈ° μν΄
role="button",aria-expanded,role="region"λ±μ μ¬μ©νμ¬ λͺ νν ꡬ쑰λ₯Ό μ 곡. μ΄λ₯Ό ν΅ν΄ μ€ν¬λ¦° 리λ μ¬μ©μμκ² κ° ν€λμ ν¨λ κ°μ κ΄κ³λ₯Ό λͺ νν μ λ¬νκ³ , μ¬μ©μ κ²½ν λ° μ κ·Όμ±μ ν₯μ.
- W3C, MUI λ° Ant Design: λͺ¨λ μλ§¨ν± μΉ μ κ·Όμ±μ μ μ§νκΈ° μν΄
π‘ UI λΌμ΄λΈλ¬λ¦¬ λΉκ΅ λΆμ
- MUI:
<button>μ μ¬μ©ν΄ κ° ν€λλ₯Ό μ μνλ©°, μ맨ν±νκ³ μ κ·Όμ± λμ ꡬ쑰λ₯Ό μ μ§.aria-expandedμaria-controlsμμ±μ μ¬μ©ν΄ ν€λμ ν¨λμ λͺ νν μ°κ²°. - Ant Design: λΉμ·νκ² μ맨ν±ν μ κ·Όμ±μ μ€μνλ©°, κ° ν€λλ
role="button"μμ±μ ν΅ν΄ ν¨λκ³Ό μ°κ²°λκ³aria-labelledbyμ κ°μ μμ±μΌλ‘ μ κ·Όμ±μ κ°ν.
βοΈ κ΅¬ν λ° μ€κ³ κ³ λ €μ¬ν
- μ£Όμ μ€κ³ κ³ λ €μ¬ν: μμ½λμΈ μ»΄ν¬λνΈλ μλ§¨ν± HTML νκ·Έ λ° μ μ ν ARIA μμ± μ¬μ©μ ν΅ν΄ μ κ·Όμ±μ κ°ννκ³ , μ¬μ©μκ° μ½κ² κ° μΉμ μ λ΄μ©μ μ΄ν΄νκ³ νμν μ μλλ‘ ν΄μΌν¨. ν€λ ν΄λ¦ μ μ½ν μΈ κ° νμλκ±°λ μ¨κ²¨μ§λλ‘ μ€κ³νλ©°, ν€λ³΄λ λ΄λΉκ²μ΄μ μ ν΅ν΄ κ° μΉμ μ μ κ·Όν μ μμ΄μΌ ν¨.
- μ½λ μμ:
<div class="accordion">
<h3>
<button type="button" aria-expanded="false" aria-controls="panel-1" id="accordion1">Section 1</button>
</h3>
<div id="panel-1" role="region" aria-labelledby="accordion1" hidden>
<p>Content of Section 1</p>
</div>
</div>π ν μ€νΈ λ° κ²ν
- μ κ·Όμ± ν
μ€νΈ: μ€ν¬λ¦° 리λμ ν€λ³΄λ λ΄λΉκ²μ΄μ
μ¬μ©μ± ν
μ€νΈλ₯Ό ν΅ν΄ κ° ν€λκ° μ μ ν μΈμλκ³ ν¨λμ΄ νμ₯λλμ§ νμΈ.
aria-expandedμμ±μ λμμ ν΅ν΄ νμ±νλ μνκ° μ λλ‘ μλ΄λλμ§ κ²ν . - λΈλΌμ°μ νΈνμ± ν μ€νΈ: μ£Όμ λΈλΌμ°μ (Chrome, Firefox, Safari, Edge)μμ μμ½λμΈμ λμμ΄ μ μμ μΌλ‘ μνλλμ§ νμΈ.
- μ¬μ©μ νΌλλ°±: μ¬μ©μ ν μ€νΈλ₯Ό ν΅ν΄ μμ½λμΈ μ»΄ν¬λνΈλ₯Ό ν΅ν μ½ν μΈ μ νμ΄ μ§κ΄μ μ΄κ³ νΈλ¦¬νμ§ νμΈνκ³ κ°μ μ¬νμ λ°μ.
π μΆκ° μ°Έκ³ μ¬ν
- κ΄λ ¨ λ¬Έμ: W3C ARIA Authoring Practices
- μ견 λ° μ μ: μμ½λμΈ μ»΄ν¬λνΈμ λν μ견μ΄λ κ°μ μ¬νμ μΆκ°
π― μν , μμ±, μν λ° νκ·Έ μμ±
- Role, Attribute, State
- Role:
role="button",role="region"μ ν΅ν΄ κ° μν μ λͺ μ - Attribute:
aria-controls,aria-labelledbyλ₯Ό μ¬μ©ν΄ ν€λμ ν¨λ κ°μ κ΄κ³ λͺ νν μ€μ - State: νμ¬ νμ±νλ ν€λμλ
aria-expanded="true"λ₯Ό μ€μ ν΄ μκ°μ λ° νλ‘κ·Έλ¨μ μΌλ‘ νμ¬ μνλ₯Ό λͺ νν νμ
- Role:
- JavaScript λ° CSS μ¬μ© μ¬λΆ
- JavaScript μ¬μ© μ¬λΆ: ν€λ ν΄λ¦ μ μ½ν μΈ μ νμ λ° μ¨κΉμ JavaScriptλ‘ μ μ΄νλ©°, ν€λ³΄λ μ΄λ²€νΈ μ²λ¦¬λ₯Ό ν΅ν΄ μ κ·Όμ±μ ν₯μ.
- CSS μ μ© μ¬ν: ν€λμ μκ°μ ν¨κ³Όμ ν¨λμ νμ/μ¨κΉ μ νμ μν΄ CSSλ₯Ό μ¬μ©νμ¬ μ¬μ©μ κ²½νμ κ°ν.